返回信息流在读一本java书时,提到RTTI:在运行时,识别对象类型。并提到在Java中,所有类型转换都是在运行时进行正确性检查的。那么,有什么简单的例子证明——所有类型转换都是在运行时进行正确性检查的,也就是需要能编译,而运行时出错的例子。Java小白求指导。
这是一条镜像帖。来源:北邮人论坛 / java / #56133同步于 2017/5/2
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Java机器人发帖
【问题】有个问题
live000001
2017/5/2镜像同步6 回复
订阅后,新回复会通过你的通知中心匿名送达。
6 条回复
可以声明一个不带泛型的List,然后把String对象放进去,那么由于没指定元素类型,那么都会当作Object对象,取出来时强制转换为Integer,编译时不会报错,但运行时就会抛出ClassCastException,这应该就是运行时才能知道对象真实类型的原因吧,也是泛型出现的原因吧。
不知道说的对不对,仅供参考啊……
发自「贵邮」
老哥,你这种例子是可以的,貌似懂了。
【 在 cbd 的大作中提到: 】
: 可以声明一个不带泛型的List,然后把String对象放进去,那么由于没指定元素类型,那么都会当作Object对象,取出来时强制转换为Integer,编译时不会报错,但运行时就会抛出ClassCastException,这应该就是运行时才能知道对象真实类型的原因吧,也是泛型出现的原因吧。
: 不知道说的对不对,仅供参考啊……
: 发自「贵邮」
简单直接的例子,明白了!赞
【 在 nuanyangyang 的大作中提到: 】
: String a = (String)(Object)(System.in);
: 试试看这个会不会出错。