gpt4 book ai didi

java - 总是在 Java 构造函数中克隆引用类型是一种好习惯吗?

转载 作者:行者123 更新时间:2023-11-30 08:38:20 25 4
gpt4 key购买 nike

让我们考虑以下片段

public class A {
private String[] a;
public A(String[] a) { this.a = a; }
@Override public void foo() { System.out.println(a[0]); }
}

以及以下用法:

String[] t = {"bar", "foo"};
A x = new A(t);
x.foo(); // prints "bar"
t[0] = "foo";
x.foo(); // prints "foo"

尽管 x 根本没有被修改。

因此,总是、总是克隆构造函数中的引用类型是一个好习惯吗?如果类型不可克隆怎么办?

最佳答案

不,克隆引用类型并不总是一个好习惯,因为它会违反开闭原则。 Bertrand Meyer 的 OCP 指出,软件实体应该对扩展开放,但对修改关闭

阅读此 article(Do not provide a public copy constructor) .

关于java - 总是在 Java 构造函数中克隆引用类型是一种好习惯吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36599136/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com