对不起,如果标题看起来很混乱,但有些例子是按顺序的。为什么不能将包含泛型类型的泛型类型分配给泛型类型的泛型类型
比方说,我有一些Java类与泛型类型参数:
public class GenericClass<T> {
}
我可以创建类型的存储对象,设置为通用参数变量,说String
。 Java也会让我该变量赋值给另一个变量,但与设置为通配符<?>
类型的泛型参数:与通用参数类时
GenericClass<String> stringy = ...
GenericClass<?> generic = stringy; // OK
但是,如果设置该参数的类型是通用,则不能然后那个类的一个对象分配给相同类型/泛型化类型,其中后者(内/嵌套)参数是通配符类型<?>
的:
GenericClass<GenericClass<String>> stringy = ...
GenericClass<GenericClass<?>> generic = stringy; // Compile Error
// And just in case that is confusing, a more
// realistic example involving Collections:
List<GenericClass<String>> stringy = ...
List<GenericClass<?>> generic = stringy; // Compile Error
特定编译错误是:
Type mismatch: cannot convert from List<GenericClass<String>> to List<GenericClass<?>>
直觉上我会认为这个任务不应该是个问题。那么为什么这个任务是一个问题?
http://stackoverflow.com/questions/1341093/nested-generics-with-wildcards的副本 – Dirk 2009-09-25 10:29:19