2012-08-09 96 views
5
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警告 - 类是原始类型。引用泛型类型类<T>应该是参数

类是原始类型。引用泛型类型类应该是 参数

这被要求在earlier question,但得到的答复是特定于Spring框架。但即使与Spring没有任何关系,我也会收到这个警告。那么问题是什么?

+0

该类型是否必须是ArrayList? – 2012-08-09 13:55:55

回答

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

尝试

public class ListOfClasses 
{ 

    private ArrayList<Class<?>> classes; 

    public ArrayList<Class<?>> getClasses() 
    { 
     return classes; 
    } 

    public void setClasses(ArrayList<Class<?>> classes) 
    { 
     this.classes = classes; 
    } 
} 

类是参数化类型,以及,如果你不声明类型参数,那么你得到一个警告,使用其中的参数化类型,预计原始类型。

0

问题是你不能说任何关于返回类的类型。这个警告不是很有用。既然你不知道它是哪一类的类型,你不能向它添加类型参数。如果你不喜欢这样写道:

public Class<? extends Object> getClasses {} 

你没有变得更好,因为一切在Java的扩展对象,除原语。我忽略了这个提示,或者把它们变成了。