我在使用泛型时遇到了问题。给出以下示例:
class A<T> {
public A(Class<T> myType){
}
}
class B<E> extends A<Collection<E>> {
public B(Class<E> myEType){
super(???);
}
}什么?应该是吗?Collection.class不能工作...Collection<E>.class也不是。(Class<Collection<E>>)Collection.class不工作...
如果有java泛型专家,我需要帮助...:/
发布于 2012-03-01 08:09:38
由于类型擦除的原因,除了Collection.class之外,您不可能获得Class<Collection<E>>。您必须使用不安全的强制转换将Collection.class强制转换为Class<Collection<E>> --具体地说,(Class<Collection<E>>) (Class) Collection.class就可以完成这项工作。
发布于 2012-03-01 08:05:33
class A<T> {
public A(Class<T> myType){
}
}
class B<E> extends A<Collection<E>> {
public B(Class<Collection<E>> myEType){ // <-- this is the changed line
super(myEType);
}
}发布于 2012-03-01 08:12:44
试试这个:
class A<T> {
public A(Class<?> myType){
}
}
class B<E> extends A<Collection<E>> {
public B(Class<E> myEType){
super(myEType);
}
}如果满意,请在此答案上打上正确的记号。
https://stackoverflow.com/questions/9508663
复制相似问题