黑马程序员技术交流社区
标题:
已经实现了Compareable怎么还会包类型转换异常啊?????...
[打印本页]
作者:
乔九
时间:
2013-2-23 09:06
标题:
已经实现了Compareable怎么还会包类型转换异常啊?????...
package com.itheima;
import java.util.*;
class Student1 implements Comparable
{
private int age;
private String name;
public int compareTo(Object obj)
{
if(!(obj instanceof Student1))
throw new RuntimeException("不是学生类");
Student1 stu=(Student1)obj;
if(this.age>stu.age)
return 1;
else if(this.age==stu.age)
return 0;
else
return -1;
}
Student1(String name,int age)
{
this.name=name;
this.age=age;
}
public String getName()
{
return name;
}
public int getAge()
{
return age;
}
}
public class TreesetTest1 {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
TreeSet ts=new TreeSet();
ts.add(new Student("01",22));
ts.add(new Student("02",23));
ts.add(new Student("03",24));
ts.add(new Student("jhg",24));
Iterator it=ts.iterator();
while(it.hasNext())
{
Student1 stu=(Student1)it.next();
System.out.println(stu.getName()+"........"+stu.getAge());
}
}
}
Exception in thread "main" java.lang.ClassCastException: com.itheima.Student cannot be cast to com.itheima.Student1 错误提示
作者:
吴硕
时间:
2013-2-23 09:29
本帖最后由 吴硕 于 2013-2-23 09:31 编辑
Exception in thread "main" java.lang.ClassCastException: com.itheima.
Student
cannot be cast to com.itheima.
Student1
ts.add(new Student("01",22));
ts.add(new Student("02",23));
ts.add(new Student("03",24));
ts.add(new Student("jhg",24));
复制代码
不存在Student类
作者:
逍林游
时间:
2013-2-23 09:32
你的学生类是:class Student1 ···············
而在main函数中 new Student("01",22)················
你仔细瞧瞧
作者:
罗海云
时间:
2013-2-23 10:57
public static void main(String[] args) {
// TODO Auto-generated method stub
TreeSet ts=new TreeSet();
ts.add(new Student("01",22));
ts.add(new Student("02",23));
ts.add(new Student("03",24));
ts.add(new Student("jhg",24));
Iterator it=ts.iterator();
while(it.hasNext())
{
Student1 stu=(Student1)it.next
();//这样不行吧.你上面是一个匿名内部类.这个it.next()里面只是包含的元素,并不是对象
System.out.println(stu.getName()+"........"+stu.getAge());
}
作者:
谢洋
时间:
2013-2-23 15:13
/**********************问题在这**********************/
TreeSet ts=new TreeSet();
ts.add(new Student("01",22)); //入去的是Student
ts.add(new Student("02",23));
ts.add(new Student("03",24));
ts.add(new Student("jhg",24));
Iterator it=ts.iterator();
while(it.hasNext())
{
Student1 stu=(Student1)it.next();//
System.out.println(stu.getName()+"........"+stu.getAge());
}
/***********************************************************/
部问题是存进去的是Student类型,但取出来时把它强转为Student1类型
1、it.next()取出来的已经向上转型为Object类型,因为存进去的是Student类,所以可以把它强转回原形(Student)
2、如果Student继承Student1,可以转为Student1类型(向上转,不安全),在这,Student并有没继承Student1
作者:
朱玉玺
时间:
2013-2-23 15:47
哥们,你存的是Student,而你定义的是Student1,你是Student类肯定没实现comparable接口
作者:
杨杨
时间:
2013-2-23 16:00
student不存在
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2