A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

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  错误提示

评分

参与人数 1技术分 +1 收起 理由
李培根 + 1 赞一个!

查看全部评分

6 个回复

倒序浏览
本帖最后由 吴硕 于 2013-2-23 09:31 编辑

Exception in thread "main" java.lang.ClassCastException: com.itheima.Student cannot be cast to com.itheima.Student1
  1.                 ts.add(new Student("01",22));

  2.                 ts.add(new Student("02",23));

  3.                 ts.add(new Student("03",24));

  4.                 ts.add(new Student("jhg",24));
复制代码
不存在Student类

评分

参与人数 1技术分 +1 收起 理由
高境 + 1 神马都是浮云

查看全部评分

回复 使用道具 举报
你的学生类是:class Student1 ···············
而在main函数中 new Student("01",22)················
你仔细瞧瞧
回复 使用道具 举报
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());
                }
回复 使用道具 举报
/**********************问题在这**********************/

              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
回复 使用道具 举报
哥们,你存的是Student,而你定义的是Student1,你是Student类肯定没实现comparable接口
回复 使用道具 举报
杨杨 中级黑马 2013-2-23 16:00:21
7#
student不存在
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马