}
在学习集合的时候,多次遇到这个问题,
if(!(obj instanceof Student))
throw new RuntimeException("不是学生对象");
Student s = (Student)obj;
这一段程序是什么意思? 作者: 张涛的狂怒 时间: 2014-8-7 15:01
Student s = (Student)obj;是进行向下转型,因为你传进来的是Object类型的public int compareTo(Object obj),所以要把把Object类转化为Student类,要不然没办法比较作者: 暗夜星辰 时间: 2014-8-7 15:02
个人理解,希望能帮到楼主!
instanceof 这个关键字是判断接收进来的obj对象是不是Person对象,如果不是则抛出Runtime异常,因为不是Person对象就不用比较了,如果是Person对象,则需要将obj对象强转为Person对象,因为你的obj其实是应用了多态,这时要转成Person需要向下转型,强转为Person对象作者: 杨庆雷 时间: 2014-8-7 15:05
if(!(obj instanceof Student)){
throw new RuntimeException("不是学生对象");}
Student s = (Student)obj;
因为传进来的要是学生才能比,所以比之前要进行判断传进来的是不是学生,不是学生的话就抛出运行时异常,
如果是学生的话就 Student s = (Student)obj;把obj强转为学生类对象
就接着往下走去比较
作者: liqi 时间: 2014-8-7 15:30
这是多态的知识点,简易再看看多态的视频,里面讲的很清楚了,可能看过了,没有真正理解
A 有三个子类 B C D
A b= new B(); A c= new C();
b是 B的对象,所以也是A的对象,这是向上转型
c是C的对象,所以也是A的对象,这是向上转型
B b= new B();这是向下转型, 发现不管向上还是向下转的都是子类对象,
也就是书上说的只有向上转型才能向下转型