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)