我实现了一个注释界面:
@Retention(RetentionPolicy.RUNTIME)
public @interface SuperClassAnnotation
{
Class<? extends SuperClass>[] subClasses();
}
以这种方式在另一个类中使用:
@SuperClassAnnotation(
subClasses = {
SubClass1.class,
SubClass2.class,
SubClass3.class,
SubClass4.class,
SubClass5.class,
SubClass6.class
}
)
当我检索subClasses
时,我想对数组进行排序。
SuperClass
实现了Comparable
并且有一个抽象方法getDisplayName()
。这是我在compareTo
方法中比较的内容。
我按以下方式对数组进行排序:
Class<? extends SuperClass>[] subClassArray = supportedSubClasses.subClasses();
Arrays.sort(subClassArray);
但我在Arrays.sort
行上遇到运行时错误:
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)
我努力实现的目标是什么?或者我应该考虑一种不同的方法吗?