当构造函数中的局部变量和实例变量相同时,java调用clone()是一个很好的选项
class X{
private String[] filename;
public X(String[] filename){
this.filename = filename.clone();
}
}
当构造函数中的局部变量和实例变量相同时,调用clone()是一个不错的选择
你可以在下面搜索框中键入要查询的问题!
class X{
private String[] filename;
public X(String[] filename){
this.filename = filename.clone();
}
}
当构造函数中的局部变量和实例变量相同时,调用clone()是一个不错的选择
# 1 楼答案
这取决于你真正想要实现什么。由于参数
filename
实际上是对调用方创建的对象的引用,因此调用new X(filename)
的任何人都有对filename
数组的引用,可以进一步修改它1)如果您不介意超出您控制范围的代码可以更改数组,您可以只分配
this.filename = filename
2)如果你想确保没有其他代码会干扰你的数组,那么克隆就有帮助了。保持在中间,尽管新阵列仍将保持对原始阵列中相同对象的崇敬。因此,如果数组元素是可变的,则不会有多大帮助。例如,如果您使用了
Foo[]
而不是String[]
,那么拥有任何给定Foo
的引用的人可以在您的控制之外对其进行修改3)如果仅仅因为数组有
clone
方法而决定使用单元素数组而不是String
,那么你的方法不会给你带来任何好处