-4
    import java.util.*;  
    class A implements Comparable<A>  
    {  
        int a;  
        public int compareTo(A other)  
        {  
            A a1 = (A) other; //No need of cast  
            if(this.a == other.a ) return 0;  
            if(this.a < other.a )  return -1;  
            return 1;  
        }  
    }  
    class ctest  
    {  
        public static void main(String args[])  
        {    
            String[] names = {"OOP","BITS","PILANI"};  
            Arrays.sort(names);  
            int[] data = { 10,-45,87,0,20,21 };  
            Arrays.sort(data);    

            A[] arr = new A[5];  
            arr[0] = new A();  
            arr[1] = new A();  
            arr[2] = new A();  
            arr[3] = new A();   
            arr[4] = new A();  
            Arrays.sort(arr);  
        }  
    } 

これにより、次のエラーが発生します。

Exception in thread "main" java.lang.ClassCastException: A cannot be cast to java.lang.Comparable  
    at java.util.ComparableTimSort.countRunAndMakeAscending(Unknown Source)  
    at java.util.ComparableTimSort.sort(Unknown Source)  
    at java.util.ComparableTimSort.sort(Unknown Source)  
    at java.util.Arrays.sort(Unknown Source)
4

1 に答える 1

1

スレッド"main"の例外java.lang.ClassCastException:Aをjava.lang.Comparableにキャストできません

これは、A実行しているバージョンが比較できないことを意味します。ほとんどの場合、Aのバージョンが2つあるか、クラスを正しく構築していません。IDEを使用してクラスをビルドすることをお勧めします。クリーンビルドを実行すると、これが修正されるはずです。

ところで:あなたのAはすべて同じなので、それらを並べ替えても何も起こりません。ビルドを修正したら、これらを修正できます。

于 2013-01-03T08:50:14.100 に答える