关于《数据结构与算法分析》中关于java泛型的一个问题
发布网友
发布时间:2022-05-05 02:50
我来回答
共2个回答
热心网友
时间:2022-06-28 18:07
"所有的类型都是GenericMemoryCell"这句表达不精确。
本意应该是"代码片段中所有涉及的类型都只是GenericMemoryCell"
cell1在被Object cell后丢失了成员比如read, storedValue的入口位置信息
cell在被强行转换成cell2后,在调用成员时出现未知错误。..追问就是说cell1向上转型时丢失了相关信息,所以调用read()方法会出错,但是为什么object类能够强制转换成GenericMemoryCell类型而编译不报错,是否由于Object是GenericMemoryCell父类,所以存在强制类型转换编译不报错(运行才可能出现错误),那假设A、B类是完全不直接相关的两个类,强制转换编译可以通过吗?(电脑不在身边,不能编码验证)
追答我看错了代码。重新来说。、
代码报错是由于cell2的类型由变成,导致cell2中没法处理输入的integer数据。编译时不会报错,但运行时会报错.
(Type) val 这样的类型转换只能作用于有父子关系的类。例子里Object和GenericMemoryCell有原始的父子继承关系。
而旁支关系是会报错的。
热心网友
时间:2022-06-28 18:08
instanceof 肯定是GenericMemoryCell