我怎样才能返回Class<Collection<G>>
,其中 G 是通用的?
public Class<Collection<G>> getType() {
return (Class<Collection<G>>)Collection.class; // This is wrong
}
由于Collection.class
是 raw Collection
( Class<Collection>
) 类,它不是Class<Collection<G>>
. 让演员表工作的一种选择是向上Class<?>
转换到然后向下转换到Class<Collection<G>>
. 这是可行的,因为您始终可以向上转换为超类型,然后向下转换是未经检查的转换,在这种情况下,它永远不会在运行时抛出异常。
对于泛型部分,您将需要一个声明泛型类型参数的泛型方法G
。
@SuppressWarnings("unchecked")
public <G> Class<Collection<G>> getType() {
return (Class<Collection<G>>)(Class<?>)Collection.class;
}