Java泛型:获取类< Collection< T>> ;? [英] Java Generics : Obtaining a Class<Collection<T>>?
问题描述
我在使用泛型时遇到问题。给出以下示例:
I'm having trouble using generics. Given the following example :
class A<T> {
public A(Class<T> myType){
}
}
class B<E> extends A<Collection<E>> {
public B(Class<E> myEType){
super(???);
}
}
什么?应该 ?
Collection.class
不工作...
集合< E> .class
都不是。
(Class< Collection< E>)Collection.class
不起作用...
What ??? should be ?
Collection.class
don't work...
Collection<E>.class
neither.
(Class<Collection<E>>)Collection.class
do not work...
如果有一个java泛型大师,我需要帮助...:/ $ / $>
If there is a java generics guru, I need help... :/
推荐答案
code> Class< Collection< E>> 除了 Collection.class
,因为类型擦除。您必须使用不安全的强制转型才能将 Collection.class
转换为 Class< Collection< E>>
- 具体来说,(Class< Collection< E>>)(Class)Collection.class
将完成这项工作。
You can't possibly get a Class<Collection<E>>
except for Collection.class
, because of type erasure. You'll have to use unsafe casts to cast a Collection.class
to a Class<Collection<E>>
-- specifically, (Class<Collection<E>>) (Class) Collection.class
will do the job.
这篇关于Java泛型:获取类< Collection< T>> ;?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!