can't be cast to java.lang.Comparable?

vvBird 2008-10-26 02:54:00
以下这段代码,我在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);
}
}
}
...全文
657 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
非典型射手 2008-10-28
  • 打赏
  • 举报
回复
就算是1.4也不能报ClassCastException啊...天知道是怎么回事
CandyOfJAVA 2008-10-28
  • 打赏
  • 举报
回复
貌似JDK版本问题,我用开始在1.4运行时也报错了,但在1.5里能正常运行,不知道1.6的会怎么样 我机器上没装
vvBird 2008-10-26
  • 打赏
  • 举报
回复
anyone else?
jjjj2005jjjj 2008-10-26
  • 打赏
  • 举报
回复
eclipse运用结果是
Before sort:
0.9823316688715059
0.6033265017649587
0.4792277366436788

After sort:
0.4792277366436788
0.6033265017649587
0.9823316688715059

我的jdk是1.6的。这个问题我以前也经常遇到,你看盾你的Mian Class中的路径是不是你的要运行的类,这个很重要
vvBird 2008-10-26
  • 打赏
  • 举报
回复
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)
---------------------------------------------------------------
介个……没啥问题吧
西瓜 2008-10-26
  • 打赏
  • 举报
回复
程序没有问题啊
在我这里正常运行
是不是你的不是JDK5.0编译器?

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧