java中类型转换异常问题

publicclassDefine{publicstaticvoidmain(String[]args){Tool<Person>tool=newTool<Person>... 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,请问什么原因?
展开
 我来答
wyc_BeHere
2018-02-23 · TA获得超过293个赞
知道小有建树答主
回答量:236
采纳率:90%
帮助的人:134万
展开全部
这有点像下面这道面试题原理
Father father = new Son();
Son son = (Son)father;
//以下出错,ClassCastException
Father father = new Father();
Son son = (Son) father;
在第一个例子中,father被指向一个子类对象,子类也可以指向子类对象。而第二个例子中,father被传给一个父类对象,子类引用不能指向父类对象。即很重要的概念是:父类引用指向子类对象。将父类转换为子类之前,应该用instanceof检查。
你直接new 父类对象 子类来强转就会CCE
望采纳 谢谢~
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
k2101170
2018-02-23 · TA获得超过416个赞
知道小有建树答主
回答量:367
采纳率:66%
帮助的人:145万
展开全部
父类不可以强制转换为子类,因为子类有的方法父类可能没有。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式