うまくいきましたが、プロジェクトを開いてコードを確認すると、正しく動作しません。
これは私のコードです:
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:
新しいプロジェクトを作成し、以前と同じアプローチでコードを書いたところ、うまくいきました。インターフェイス<>に何か問題があったと思います。