Eclipse警告 - 类是原始类型。对泛型类<t>的引用应该参数化</t>

时间:2012-08-09 13:52:58

标签: java generics

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有任何关系,我也会得到这个警告。那么问题是什么?

3 个答案:

答案 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。我忽略了这些提示,或者转过它们。