使用Comparable<>对对象排序。错误

时间:2013-11-01 09:20:48

标签: java

它有效,但现在我打开我的项目并检查代码并且它无法正常工作;

这是我的代码:

  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();

    }

主要功能如下:

 House[] arr = new House[3];

        House tent = new House("House",6,1);
        House  bigTent = new House("The biggest house",10,3);
        House  shouse = new House("Medium house",8,4);



        arr[0]= tent;
        arr[1]= bigTent;
        arr[2]= shouse;

        Arrays.sort(arr);

        int i = 0;
        for(House temp : arr)
            {

            System.out.println("Houses "+ ++i + " :"+temp.getHouseName()+" with windows: "+temp.getWindowsNumber());

            }

我收到此错误:sortobject.House cannot be cast to 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:

我创建了一个新项目并使用与之前相同的方法编写代码,并且它可以正常工作。我认为我的界面&lt;&gt;。

出了问题

2 个答案:

答案 0 :(得分:0)

使用JDK 1.7似乎工作正常 - 制作代码的本地副本,成功编译并执行main方法。也许,真的,清理项目可以神奇地帮助。

答案 1 :(得分:0)

您可能在main方法中引用了不同的House(可能是另一个包中具有相同结构的类,除了它没有实现Comparable)。确保此House与上面的House相同:

House[] arr = new House[3];