gpt4 book ai didi

java - 在 Java 中使用可变引用创建不可变类

转载 作者:行者123 更新时间:2023-12-02 03:48:18 24 4
gpt4 key购买 nike

我不明白在 Java 中使类不可变的要求。以下是我无法理解的要求:

1) 如果实例字段包含对可变对象的引用,则不允许更改这些对象:

a) 不要提供修改可变对象的方法。

b) 不要共享对可变对象的引用。切勿存储对传递给构造函数的外部可变对象的引用;如有必要,创建副本并存储对副本的引用。同样,必要时创建内部可变对象的副本,以避免在方法中返回原始对象。

请用一个清晰​​简单的例子解释这个概念。

最佳答案

Don't provide methods that modify the mutable objects

如果您不提供 getter,并且该实例不是从外部源传递给您的类(通常传递给构造函数),则只有您的类可以访问这个组合实例。

Never store references to external, mutable objects passed to the constructor

在 Java 中,甚至引用都是按值传递的,因此当将引用类型传递给类的构造函数时,您需要创建实例的副本(即,不要如果不使用传递的实例,请使用该实例的深层复制)。

create copies of your internal mutable objects when necessary to avoid returning the originals in your methods.

如果您必须向调用者返回引用类型,那么您应该返回防御性副本,而不是对原始实例的引用。

关于java - 在 Java 中使用可变引用创建不可变类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36130204/

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