3
比方说,我有一个具有以下签名的方法:为什么在这种情况下演员是必要的?
public static <T> Set<Class<? extends T>> dosomething(Class<T> clazz)
如果我想这使用通配符类,就像在下面的例子中
Class<?> clazz = Integer.class
Set<Class<?>> result = dosomething(clazz);
编译器抱怨以下调用:
Error: incompatible types: inference variable T has incompatible equality constraints java.lang.Object,capture#1 of ?
所以解决方法是在方法调用中添加一个强制转换。
Set<Class<?>> result = (Set<Class<?>>) dosomething(clazz);
我想知道这是为什么中投需要在这一特殊情况下,如果有什么解决办法,以避免铸造... 我用java-8这一点。 感谢
我想编译器不知道类>会延长T. –