我有4个类,都实现一个接口IntSorter。所有类都有一个sort方法,因此对于每个类,我想在数组上调用sort

我认为这样会起作用:

IntSorter[] classes = new IntSorter[] {
Class1.class, Class2.class, Class3.class, Class4.class
};
for (Class c : classes)
    c.sort(array.clone());


但是classes无法保存.class名称,出现错误Type mismatch: cannot convert from Class<Class1> to IntSorter

所以我尝试了

Class[] classes = new Class[] {
Class1.class, Class2.class, Class3.class, Class4.class
};
for (Class c : classes)
    c.sort(array.clone());


但是现在无法调用c.sort()。我尝试使用(IntSorter) c首先将类解析为IntSorter,但随后出现错误Cannot cast from Class to IntSorter

我该如何解决?

最佳答案

您试图创建类数组而不是实现IntSorter的类实例数组。

检查以下问题以了解类,对象和实例之间的区别:The difference between Classes, Objects, and Instances

就我所提供的有限信息而言,您的代码应该看起来像这样:

IntSorter[] classes = new IntSorter[] {
new Class1(), new Class2(), new Class3(), new Class4()
};
for (IntSorter c : classes)
    c.sort(array.clone());

09-25 20:45