黑马程序员技术交流社区
标题:
如何处理该ClassCastException异常
[打印本页]
作者:
吖钦
时间:
2014-12-8 13:53
标题:
如何处理该ClassCastException异常
程序如下:
import java.util.*;
public class Lianxi09
{
public static void main(String[] args)
{
TreeSet<Student10> ts = new TreeSet<Student10>();
ts.add(new Student10("abc03"));
}
}
class Person10
{
private String name;
Person10(String name)
{
this.name= name;
}
public String getName()
{
return name;
}
public String toString()
{
return "Person:"+name;
}
}
class Student10 extends Person10
{
Student10 (String name)
{
super(name);
}
}
编译时出现
Exception in thread "main" java.lang.ClassCastException: 第十五天.Student10 cannot be cast to java.lang.Comparable
at java.util.TreeMap.compare(Unknown Source)
at java.util.TreeMap.put(Unknown Source)
at java.util.TreeSet.add(Unknown Source)
at 第十五天.Lianxi09.main(Lianxi09.java:9)
提问:该如何解决?
作者:
龙骑将杨影枫
时间:
2014-12-8 14:50
请在class Person10后面加implements Comparable,TreeSet里存放的类必须继承Comparable接口。
作者:
HelloWorld!
时间:
2014-12-8 15:14
TreeSet集合是强制性排序的,TreeSet集合对元素强制性排序,有排序就必须比较,比较的方式有两种:
第一种方式:元素自身具备比较性,具体做法是元素所属的类实现Comparable接口,复写接口中的comparaTo()方法,自定义比较条件。如果元素自身不具备比较性,或者排序规则不是所需,就可以采用第二种方式:自定义比较器类实现Comparator接口,复写其compare()方法,自定义比较条件,将自定义比较器对象作为TreeSet集合构造函数的实际参数传递,让TreeSet集合自身具备比较性,可以对元素按比较器定义的规则进行排序。优先考虑第二种方式。
作者:
lwh316658735
时间:
2014-12-8 15:17
按理说,添加1个元素是不会有错的。但是最好给存入的对象覆盖其自然排序的方法,不然会报你这样的异常的
作者:
有陷阱快跑丶
时间:
2014-12-8 19:18
TreeSet中需要 实现能自然排序 或者用比较器排序 可以将要存的类实现Runnable 接口 实现compareTo方法
作者:
有陷阱快跑丶
时间:
2014-12-8 19:38
有陷阱快跑丶 发表于 2014-12-8 19:18
TreeSet中需要 实现能自然排序 或者用比较器排序 可以将要存的类实现Runnable 接口 实现compareTo方法 ...
打错 不好意思 是Comparable:P
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2