您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

具有多个类的Java泛型通配符

具有多个类的Java泛型通配符

实际上,你可以做你想做的事。如果要提供多个接口或一个类加接口,则必须使通配符看起来像这样:

<T extends ClassA & InterfaceB>

请参见sun.com上的泛型教程,特别是页面底部的“ 绑定类型参数”部分。实际上,如果需要,你可以列出多个接口,并& InterfaceName根据需要使用每个接口。

这会变得任意复杂。为了演示,请参阅的JavaDoc声明Collections#max(分为两行)为:

public static <T extends Object & Comparable<? super T>> T
                                           max(Collection<? extends T> coll)

为什么这么复杂?如Java泛型常见问题解答中所述:保留二进制兼容性。

看起来这不适用于变量声明,但是在类上放置通用边界时它确实起作用。因此,要做你想做的事情,你可能不得不跳过几圈。但是你可以做到的。你可以执行以下操作,在类上放置通用边界,然后:

class classB { }
interface interfaceC { }

public class MyClass<T extends classB & interfaceC> {
    Class<T> variable;
}

得到variable具有你想要的限制。有关更多信息和示例,请查阅Java 5.0中的泛型的第3页。注意,在中<T extends B & C>,类名必须排在最前面,然后是接口。当然,你只能列出一个班级。

java 2022/1/1 18:17:54 有510人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶