【发布时间】:2014-10-25 17:16:38
【问题描述】:
所以我这里有这一行代码:
LinkedList<Integer> p = (LinkedList) obj.c.clone();
我想知道为什么在obj.c.clone() 之前需要(LinkedList) 部分?
【问题讨论】:
标签: java linked-list
所以我这里有这一行代码:
LinkedList<Integer> p = (LinkedList) obj.c.clone();
我想知道为什么在obj.c.clone() 之前需要(LinkedList) 部分?
【问题讨论】:
标签: java linked-list
答案是: 您需要类型转换才能访问目标类方法和字段。
Object 和 LinkedList 是相同的类型层次结构,所以你可以强制转换,否则你会在 Java 中得到 ClassCastException。
有关类型转换的更多信息,请参阅link。
【讨论】:
方法Object.clone()返回Object类型的结果。如果您想将其用作LinkedList,则需要将结果显式转换为LinkedList 类型。
【讨论】:
clone() 方法返回一个Object,所以你必须把它转换成LinkedList
【讨论】:
LinkedList 类实现Java´s clonable interface。如果您阅读有关该具体接口的文档,您会发现clone 定义是:
protected Object clone()
也就是说,在 Java 中,对 Object 对象的引用,对任何不是展开的基本类型的对象。
您需要将引用类型强制转换为LinkedList,以便能够使用(“查看”)其未包含在Object 类定义中的方法/属性。
【讨论】: