import java.util.ArrayList;
public class ListOfClasses
{
private ArrayList<Class> classes;
public ArrayList<Class> getClasses()
{
return classes;
}
public void setClasses(ArrayList<Class> classes)
{
this.classes = classes;
}
}
为此,我在eclipse中收到以下警告 -
Class是原始类型。对泛型类的引用应该是 参数
这是在earlier question中提出的,但答案是针对Spring Framework的。但即使没有与Spring有任何关系,我也会得到这个警告。那么问题是什么?
答案 0 :(得分:9)
我怀疑它抱怨Class是原始类型。你可以尝试
private List<Class<?>> classes;
或抑制此特定警告。
在这种情况下,我会忽略警告。我也会考虑使用防御性副本。
private final List<Class> classes = new ArrayList<>();
public List<Class> getClasses() {
return classes;
}
public void setClasses(List<Class> classes) {
this.classes.clear();
this.classes.addAll(classes);
}
答案 1 :(得分:1)
尝试
public class ListOfClasses
{
private ArrayList<Class<?>> classes;
public ArrayList<Class<?>> getClasses()
{
return classes;
}
public void setClasses(ArrayList<Class<?>> classes)
{
this.classes = classes;
}
}
Class也是一个参数化类型,如果你没有声明一个类型参数,那么你会得到一个警告,要求使用期望参数化类型的原始类型。
答案 2 :(得分:0)
问题是你不能对退回的类的类型说些什么。这个警告不是很有用。既然你不知道它是哪种类,你就不能为它添加类型参数。如果你这样做:
public Class<? extends Object> getClasses {}
你没有做得更好,因为除了基元之外,所有东西都扩展了Java中的Object。我忽略了这些提示,或者转过它们。