|
1
108
克隆受到保护的事实非常可疑
:
|
|
|
2
31
孙:
|
|
3
8
|
|
|
4
4
Clone方法不能直接用于任何对象,这就是为什么它被子类覆盖的原因。 当然,这可能是公开的,只是在克隆不可能的情况下抛出一个适当的例外,但我认为这会产生误导。 现在实现clone的方式会让你思考为什么要使用clone,以及如何克隆你的对象。 |
|
|
5
3
它受到保护,因为默认实现对所有字段(包括private)进行浅层成员复制, 规避构造函数
出于同样的原因,默认实现
|
|
|
6
3
子类可调用但其他类不能调用的方法的正确范围是什么?
|
|
7
2
来自cloneable的javadoc。
|
|
|
8
0
Clone()方法内部有一个检查“是否为Cloneable实例”。Java团队可能认为这将限制clone()方法的不当使用。clone(()方法是受保护的,即仅由子类访问。由于object是所有子类的父类,因此如果我们没有对“Cloneable实例”进行上述检查,Clone()方法实际上可以被所有类使用。这就是为什么Java团队可能会考虑通过在clone()方法中检查“它是Cloneable的实例”来限制clone的不当使用。 因此,任何实现cloneable的类都可以使用Object类的clone()方法。
|
|
|
9
-1
但我通过实现这段代码来解决这个问题
正如之前有人所说。 |
|
|
10
-2
好吧,sun的开发人员也只是人类,他们确实犯了一个巨大的错误,将clone方法实现为受保护的,就像他们在ArrayList中实现了一个不起作用的clone方法一样!因此,一般来说,即使是经验丰富的Java程序员对克隆方法也存在更深层次的误解。 |
|
|
11
-4
Java JDK框架再次展现出卓越的思维: Cloneable接口不包含“public T clone();”方法,因为它的行为更像是一个允许克隆它的实例的属性(例如Serializable)。 这种设计没有任何问题,因为:
|
|
|
user29759326 · 如何返回递归函数中的最后一个值? 1 年前 |
|
|
malife89 · 将java中的字符串读取为正确的日期格式 1 年前 |
|
|
Tim · 在java中,有没有更快的方法将字节数组写入文件? 1 年前 |
|
|
rudraraj · java中未声明最终变量 1 年前 |
|
|
Bala Ji · 以下BFS的实施效率如何? 1 年前 |