Java-当超类实现Comparable时对通配符数组进行排序

Java-当超类实现Comparable时对通配符数组进行排序,java,arrays,sorting,annotations,wildcard,Java,Arrays,Sorting,Annotations,Wildcard,我实现了一个注释接口: @Retention(RetentionPolicy.RUNTIME) public @interface SuperClassAnnotation { Class<? extends SuperClass>[] subClasses(); } 当我检索子类时,我想对数组进行排序 SuperClass实现了Comparable并具有一个抽象方法getDisplayName()。这就是我在compareTo方法中比较的内容 我按以下方式对数组排序: C

我实现了一个注释接口:

@Retention(RetentionPolicy.RUNTIME)
public @interface SuperClassAnnotation
{
    Class<? extends SuperClass>[] subClasses();
}
当我检索
子类时,我想对数组进行排序

SuperClass
实现了
Comparable
并具有一个抽象方法
getDisplayName()
。这就是我在
compareTo
方法中比较的内容

我按以下方式对数组排序:

Class<? extends SuperClass>[] subClassArray = supportedSubClasses.subClasses();
Arrays.sort(subClassArray);

我想要达到的目标可能吗?或者我应该考虑一种不同的方法吗?< /P>你传递到的代码>排序< /COD>是一个类数组。它将尝试比较此数组中类型为
Class
的对象。如果需要对超类对象进行排序,则需要传递一个超类数组。另外,您的
子类
方法正在返回一个类数组!!而不是那些可以调用
compareTo
调用
getDisplayName()
的类的实际实例。我知道这一点。我留级的原因
Class<? extends SuperClass>[] subClassArray = supportedSubClasses.subClasses();
Arrays.sort(subClassArray);
java.lang.ClassCastException: java.lang.Class cannot be cast to java.lang.Comparable
    at java.util.ComparableTimSort.countRunAndMakeAscending(ComparableTimSort.java:290)
    at java.util.ComparableTimSort.sort(ComparableTimSort.java:157)
    at java.util.ComparableTimSort.sort(ComparableTimSort.java:146)
    at java.util.Arrays.sort(Arrays.java:472)
    at edu.emory.mathcs.backport.java.util.Arrays.sort(Arrays.java:76)