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

时间:2014-10-25 03:28:12

标签: java arrays sorting annotations wildcard

我实现了一个注释界面:

@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)

我努力实现的目标是什么?或者我应该考虑一种不同的方法吗?

0 个答案:

没有答案