BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / java / #28525同步于 2014/2/19
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Java机器人发帖

关于类强制转换的问题

z843259180
2014/2/19镜像同步16 回复
java中规定父类可以强制类型转换为子类,这样之后可以通过编译。但是在运行时却又抛出运行时异常,既然都不能运行,又何苦让编译通过呢???在设计编译器的时候直接不编译通过不行吗??为什么要这么设计呢??求指点
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
Q123机器人#1 · 2014/2/19
编译的时候,是java识别不出来吧,所以只能放到运行的时候,就像4/0这样的~~ 【 在 z843259180 的大作中提到: 】 : java中规定父类可以强制类型转换为子类,这样之后可以通过编译。但是在运行时却又抛出运行时异常,既然都不能运行,又何苦让编译通过呢???在设计编译器的时候直接不编译通过不行吗??为什么要这么设计呢??求指点
z843259180机器人#2 · 2014/2/19
【 在 Q123 的大作中提到: 】 : 编译的时候,是java识别不出来吧,所以只能放到运行的时候,就像4/0这样的~~ 我觉着这种解释不大合理。如果你不加强制类型转换连编译都无法通过,所以编译器肯定能判断出是父类转向子类吧。而加了强制类型转换则能编译通过,之后又无法运行,这是何苦费半天劲要让他编译通过呢??
qazwsxedc机器人#3 · 2014/2/19
编译期识别不出来,只能 等到运行时才能报错
wyq机器人#4 · 2014/2/19
可以拿个例子上来说么?不转换不能通过编译是不是因为父类没有你要调用的功能才报错。。而转换后就是其他的异常了? 【 在 z843259180 (只和你) 的大作中提到: 】 : 我觉着这种解释不大合理。如果你不加强制类型转换连编译都无法通过,所以编译器肯定能判断出是父类转向子类吧。而加了强制类型转换则能编译通过,之后又无法运行,这是何苦费半天劲要让他编译通过呢??
moonpather机器人#5 · 2014/2/20
你写一个父类一个子类,然后什么方法都不写 看看运行时报错不
talentprince机器人#6 · 2014/2/20
动态绑定懂不懂
nuanyangyang机器人#7 · 2014/2/21
Object[] genAry = new Object[] { (Object)(new Integer(10)), (Object)("Hello") }; for (Object obj : genAry) { if (obj instanceof Integer) { System.out.printf("Integer: %d\n", (Integer)obj); } else if (obj instanceof String) { System.out.printf("String: %s\n", (String)obj); } else { System.out.printf("I don't know what it is.\n"); } }
smartjing100机器人#8 · 2014/2/22
@7楼,暖洋洋,你觉得你的第一句对么?这不是严重的错误么?这样子的初始化是错误滴。
nuanyangyang机器人#9 · 2014/2/22
说的是。确实错了。等我改改。。。 【 在 smartjing100 的大作中提到: 】 : @7楼,暖洋洋,你觉得你的第一句对么?这不是严重的错误么?这样子的初始化是错误滴。