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,请问什么原因? 展开
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,请问什么原因? 展开
2个回答
展开全部
这有点像下面这道面试题原理
Father father = new Son();
Son son = (Son)father;
//以下出错,ClassCastException
Father father = new Father();
Son son = (Son) father;
在第一个例子中,father被指向一个子类对象,子类也可以指向子类对象。而第二个例子中,father被传给一个父类对象,子类引用不能指向父类对象。即很重要的概念是:父类引用指向子类对象。将父类转换为子类之前,应该用instanceof检查。
你直接new 父类对象 子类来强转就会CCE
望采纳 谢谢~
Father father = new Son();
Son son = (Son)father;
//以下出错,ClassCastException
Father father = new Father();
Son son = (Son) father;
在第一个例子中,father被指向一个子类对象,子类也可以指向子类对象。而第二个例子中,father被传给一个父类对象,子类引用不能指向父类对象。即很重要的概念是:父类引用指向子类对象。将父类转换为子类之前,应该用instanceof检查。
你直接new 父类对象 子类来强转就会CCE
望采纳 谢谢~
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询