以下这段代码,我在Eclipse或NetBeans中可以运行,但在命令行下用java执行时却给出了错误信息:
Exception in thread "main" java.lang.ClassCastException: The_Obj cannot be cast
to java.lang.Comparable
        at java.util.Arrays.mergeSort(Arrays.java:1144)
        at java.util.Arrays.sort(Arrays.java:1079)
        at The_Obj.main(The_Obj.java:22)
这是为啥?
public class The_Obj implements Comparable<The_Obj>
{
private double a;
public The_Obj(double a){
this.a =a;
}
public int compareTo(The_Obj obj)
{
if(this.a > obj.a) return 1;
else if(this.a == obj.a) return 0;
else return -1;
}
public static void main(String[] args)
{
Comparable<The_Obj>[] array = new The_Obj[3];
System.out.println("Before sort: ");
for(int i = 0; i < 3; i++){
array[i] = new The_Obj((double)Math.random());
System.out.println(((The_Obj)array[i]).a);
}
System.out.println("\nAfter sort: ");
java.util.Arrays.sort(array);
for(int i = 0; i < 3; i++){
System.out.println(((The_Obj)array[i]).a);
}
}
}

解决方案 »

  1.   

    程序没有问题啊
    在我这里正常运行
    是不是你的不是JDK5.0编译器?
      

  2.   

    java version "1.6.0_07"
    Java(TM) SE Runtime Environment (build 1.6.0_07-b06)
    Java HotSpot(TM) Client VM (build 10.0-b23, mixed mode, sharing)
    ---------------------------------------------------------------
    介个……没啥问题吧
      

  3.   

    eclipse运用结果是
    Before sort: 
    0.9823316688715059
    0.6033265017649587
    0.4792277366436788After sort: 
    0.4792277366436788
    0.6033265017649587
    0.9823316688715059我的jdk是1.6的。这个问题我以前也经常遇到,你看盾你的Mian Class中的路径是不是你的要运行的类,这个很重要
      

  4.   

    貌似JDK版本问题,我用开始在1.4运行时也报错了,但在1.5里能正常运行,不知道1.6的会怎么样 我机器上没装
      

  5.   

    就算是1.4也不能报ClassCastException啊...天知道是怎么回事