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 中收到以下警告-

类是原始类型。对泛型类的引用应该被参数化

这是在较早的问题中提出的,但答案是特定于 Spring 框架的。但是即使与 Spring 没有任何关系,我也会收到此警告。那么问题是什么?

4

3 回答 3

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);
}
于 2012-08-09T13:56:46.137 回答
1

尝试

public class ListOfClasses
{

    private ArrayList<Class<?>> classes;

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

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

类也是参数化类型,如果您不声明类型参数,则会收到警告,要求您在需要参数化类型的地方使用原始类型。

于 2012-08-09T13:56:18.030 回答
0

问题是你不能说任何关于返回类的类型。这个警告不是很有用。由于您不知道它是哪种类型的类,因此您不能向它添加类型参数。如果你这样做:

public  Class<? extends Object> getClasses {}

你不会让它变得更好,因为除了原语之外,Java 中的所有东西都扩展了 Object。我忽略了这些提示,或者将它们关闭。

于 2015-08-20T06:04:17.173 回答