Java 我得到了一个ClassCastException,但是我的源类型对象是超类型的,而cast操作符是子类型的
当我执行下面的代码时,为什么会得到ClassCastExceptionJava 我得到了一个ClassCastException,但是我的源类型对象是超类型的,而cast操作符是子类型的,java,Java,当我执行下面的代码时,为什么会得到ClassCastException class Test extends Test3 { public static void main(String[] args) { Test3 t3 = new Test3(); Test t = (Test) t3; System.out.print("hello"); } } 基本数据类型的强制转换是通过这种方式完成的。但是,如果您尝试使用字符串,例如
class Test extends Test3 {
public static void main(String[] args) {
Test3 t3 = new Test3();
Test t = (Test) t3;
System.out.print("hello");
}
}
基本数据类型的强制转换是通过这种方式完成的。但是,如果您尝试使用字符串,例如[class],那么如果没有从字符串转换为整数的
int-Stringvariable=Integer.parseInt(Stringvariable)
,或者String-intvariable=String.valueof(intvariable)等方法,您就无法进行强制转换
将整数转换为字符串
parseInt(Stringvariable)
是Integer类中的一个方法。
valueof(intvariable)
是字符串类中的一个方法。如果要建立任何强制转换关系,请通过方法进行。因为Test3
不是Test
:aTest
是Test3
。正如哺乳动物
不是狗
,而是狗
是哺乳动物
。这正是你不能做的。不能将对象强制转换为它不是的对象。