Java不可变类疑惑

标签 java

我正在编写一个不可变类。其中一个实例是另一个可变类的对象。我怎样才能防止修改该实例的状态。

最佳答案

如果您为所有 getter 提供委托(delegate),但不为字段本身提供 getter。例如:

public final class Foo {
   private Bar bar;

   public String getBarField1() { 
       return bar.getBarField1();
   }
   public String getBarField2() {
       return bar.getBarField2();
   }
}

但是有一点需要考虑——字段是如何创建的。如果它是在构造函数中传递的,那么您必须创建它的副本而不是获取传递的对象,否则创建代码将引用 Bar 实例并能够修改它。

关于Java不可变类疑惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5894628/

相关文章:

java - K&R 配置文件未包含在 Eclipse 上的内置配置文件中

java - 从一个类访问另一个类的数组数据时遇到问题

java - 使用 JAVA 作为消息的一部分发送 AT 命令

java - 如何提取隐藏在HibernateProxy后面的原始实体类?

java - 实现设置一些 TextView 属性的方法

java - 如何将Blogger集成到个人网站?

java - 计算 BMI 以及如何防止 float 舍入 (Java)

java - Jersey JSON 不适用于最新的 Jersey API

java - JQuery AJAX Done 未执行

Java - Apache POI - 使用循环填充行和单元格时遇到问题(Excel)