所以我在这里有一行代码:
LinkedList<Integer> p = (LinkedList) obj.c.clone();
我想知道为什么在(LinkedList)
之前需要obj.c.clone()
部分?
答案 0 :(得分:3)
方法Object.clone()
返回Object
类型的结果。如果您想将其用作LinkedList
,则需要向LinkedList
类型显式投射结果。
答案 1 :(得分:3)
答案是: 您需要使用类型转换来访问目标类方法和字段。
Object
和LinkedList
是相同的类型层次结构,因此您可以进行强制转换,否则您将获得Java中的ClassCastException
。
有关类型转换的详细信息,请参阅此link。
答案 2 :(得分:2)
clone()
方法返回Object
,因此您必须将其强制转换为LinkedList
答案 3 :(得分:2)
LinkedList类实现Java´s clonable interface。如果您阅读该具体界面上的文档,您会发现clone
deffinition是:
protected Object clone()
即,在Java中对Object
对象的引用,指向任何未解包的基本类型的对象。
您需要将引用类型强制转换为LinkedList
,以便能够使用(“查看”)Object
类定义中未包含的方法/属性。