java中类型转换异常问题

public class Define{
public static void main(String[] args) {

Tool<Person> tool=new Tool<Person>();

Student stu=(Student)(tool.addElement(new Person("ad",13,'男'))).get(0);
}
}
public class Tool<T>{
public <A> LinkedList addElement(T a){
LinkedList<T> ll=new LinkedList<T>();
ll.add(a);
return ll;
}
}
Student继承Person,编译已经通过了,运行时抛出java.lang.ClassCastException: bean.Person cannot be cast to bean.Student,请问什么原因?

第1个回答  2018-02-23
这有点像下面这道面试题原理
Father father = new Son();
Son son = (Son)father;
//以下出错,ClassCastException
Father father = new Father();
Son son = (Son) father;
在第一个例子中,father被指向一个子类对象,子类也可以指向子类对象。而第二个例子中,father被传给一个父类对象,子类引用不能指向父类对象。即很重要的概念是:父类引用指向子类对象。将父类转换为子类之前,应该用instanceof检查。
你直接new 父类对象 子类来强转就会CCE
望采纳 谢谢~本回答被提问者采纳
第2个回答  2018-02-23
父类不可以强制转换为子类,因为子类有的方法父类可能没有。
相似回答