java如何正确指定类<?>使用泛型的参数
我的目标是实现一个接受类实例的操作,但前提是具体传递的类继承自集合
我的代码中出现了编译器警告,我无法解析
package com.fun.with.generics;
import java.util.ArrayList;
import java.util.Collection;
public class AcceptTypedClass
{
// Warning here on 'Collection': ... raw type, references should be parameterized.
private static void printCollectionClass( Class<? extends Collection> c )
{
System.out.println( c.getName() );
}
public static void main( String[] args )
{
// Warning here on ArrayList: ... raw type, references should be parameterized.
Class<ArrayList> arrayList = ArrayList.class;
printCollectionClass( arrayList );
}
}
我确实理解警告消息,但如果我通过添加如下所示的缺失类型参数来修复警告,我会得到一个错误
Class<ArrayList<?>> arrayList = ArrayList.class;
有人能解释一下吗?问题是,我是否可以编写上面的代码,这样我就不会收到任何警告(而且代码还能工作)
# 1 楼答案
您可以将
printCollectionClass
方法更改为这里
printCollectionClass
将接受从集合继承的类