Java 使用Compariable对对象进行排序<>。错误

Java 使用Compariable对对象进行排序<>。错误,java,Java,它工作了,但现在我打开我的项目,检查代码,它不能正常工作 这是我的代码: class House implements Comparable<House> { private String hName; private int windowsNumber, doorNumber; //... @Override public int compareTo(House obj) {

它工作了,但现在我打开我的项目,检查代码,它不能正常工作

这是我的代码:

  class House implements Comparable<House>
    {

    private String hName;
    private int windowsNumber,
                doorNumber;

    //...


    @Override
    public int compareTo(House obj)
    {

        int nr = ((House)obj).getWindowsNumber();

        return nr - getWindowsNumber();

    }
我收到以下错误:
sortobject.House无法转换为java.lang.Comparable
。有人能猜出来吗?我不知道它有什么毛病

完整错误代码:

Exception in thread "main" java.lang.ClassCastException: sortobject.House 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 sortobject.SortObject.main(SortObject.java:24)
Java Result: 1
编辑2:


我创建了一个新项目,并像以前一样使用相同的方法编写了代码,而且效果很好。我相信我的界面出了问题。

JDK1.7似乎工作正常-制作了代码的本地副本,成功编译并执行了main方法。也许,清理项目真的能起到神奇的作用。

您可能在主方法中引用了不同的
房屋
(可能是另一个包中的一个类,它具有相同的结构,只是它没有实现
Comparable
)。确保该
房屋
与上述
房屋
相同:


House[]arr=新房子[3]

这里的情况看起来不错。仅供参考,您的
比较方法具有冗余代码。它应该简单地说
return obj.getWindowsNumber()-getWindowsNumber()
@MarkoTopolnik是的,该强制转换是多余的。请尝试
Arrays.sort(…
?@OldCurmudgeon它没有改变任何事情我认为问题出在所使用的不同房屋类中,正如@Nishant shresh所写的,这不是IDE问题。也许你使用的是不同的
可比的
接口?将
数组.sort(arr);
改为
集合.sort(Arrays.asList(arr));
它会在编译时告诉您是否有错误。好的,我创建了一个新项目并再次编写了代码(不是复制粘贴),它是有效的。@Holger它告诉我不能像你写的那样做,因为这不是合适的方法…@Ernusc:重要的一点是它告诉你的原因。它似乎证实了你的怀疑,你的项目中有一个不同的
可比的
接口。
Exception in thread "main" java.lang.ClassCastException: sortobject.House 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 sortobject.SortObject.main(SortObject.java:24)
Java Result: 1