以下这段代码,我在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);
}
}
}
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);
}
}
}
在我这里正常运行
是不是你的不是JDK5.0编译器?
Java(TM) SE Runtime Environment (build 1.6.0_07-b06)
Java HotSpot(TM) Client VM (build 10.0-b23, mixed mode, sharing)
---------------------------------------------------------------
介个……没啥问题吧
Before sort:
0.9823316688715059
0.6033265017649587
0.4792277366436788After sort:
0.4792277366436788
0.6033265017649587
0.9823316688715059我的jdk是1.6的。这个问题我以前也经常遇到,你看盾你的Mian Class中的路径是不是你的要运行的类,这个很重要