-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 或者您没有正确构建类。我建议使用 IDE 来构建你的类并进行干净的构建应该可以解决这个问题。

顺便说一句:你所有的 A 都是一样的,所以对它们进行排序不会有任何作用。修复构建后,您可以修复这些问题。

于 2013-01-03T08:50:14.100 回答