gpt4 book ai didi

java - 在 Java 中创建不可变对象(immutable对象)

转载 作者:搜寻专家 更新时间:2023-11-01 04:06:11 24 4
gpt4 key购买 nike

我想为我的代码库创建一些不可变对象(immutable对象)。真正传递给定类旨在不可变的消息的最佳方式是什么?我是否应该将所有字段设为最终字段,并在对象构造期间进行初始化? (这看起来真的很尴尬......)我应该创建一些不可变接口(interface),并让对象实现它吗? (由于 Java 在这背后没有一些标准接口(interface),我认为他们有其他处理方法。)处理这个问题的标准方法是什么? (如果它只是通过在字段周围添加一堆注释来声明它们一旦初始化就不应修改,那也很好。)

最佳答案

Should I make all of my fields final, and initialize during object construction?

是的。并确保这些类型本身是不可变的,或者当您从 getter 方法返回值时创建副本。并使类(class)本身成为 final类。 (否则你的类本身可能是不可变的,但这并不意味着你的类的任何实例都是不可变的 - 因为它可能是可变子类的实例。)

(This seems really awkward...)

如果不知道如何您会觉得这很尴尬,就很难知道要建议什么 - 但构建器模式通常很有用。我通常为此使用嵌套静态类,通常使用静态工厂方法。所以你最终得到:

Foo foo = Foo.newBuilder()
.setName("asd")
.setPoints(10)
.setOtherThings("whatever")
.build();

关于java - 在 Java 中创建不可变对象(immutable对象),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16659762/

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