在java中
class Person{}
class Student extends Person{}
public class Test {
public static void main(String[] args) {
Person person = new Person();
Student student = (Student)person;
}
}
有一个 "线程中的异常" main" java.lang.ClassCastException:无法将人员强制转换为学生"
答案 0 :(得分:1)
你正在进行施法
不允许下面的向下施法。因为人不是学生或学生的子类的实例。
Student student = (Student)person;
下面的向下投射是可以的。因为findview的结果是Button的实现。
Button button = (Button)findViewById...
答案 1 :(得分:0)
如果你想用你的例子在Android中模拟案例,它应该是这样的:
class Person{}
class Student extends Person{}
public class Test {
public static void main(String[] args) {
Person person = getPerson();
Student student = (Student) person;
}
private Person getPerson() {
return new Student();
}
}
哪个完全没问题。
这意味着findViewById()
返回的对象实际上是Button
,但是升级为View
。稍后您需要将其转发到Button
。