好吧,请两个,我误解了您的问题。
当您使用delcare
Thing(称为 原始类型 )而不是
Thing<?>( 参数化类型
)时,Java编译器会剥离所有泛型参数,即使是(如您的情况),方法的泛型也与方法的泛型无关。类。
来自(优秀的)Java Generics
FAQ:
我可以像其他类型一样使用原始类型吗?
原始类型的方法或构造函数具有在类型擦除后将具有的签名。
这个看似轻率且不引人注意的句子描述了所讨论的行为。您将其
Thing用作原始类型,因此返回类型为
Collection(not
Collection<String>),因为这是类型擦除后的类型。
困惑?不奇怪。只需查看该常见问题解答的大小即可。大概有大约三个人了解Java泛型的全部含义。只要考虑一下我最喜欢的JDK声明:
Enum<T extends Enum<T>>
(在FAQ中也有对此的解释)。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)