Java:复合对象的不变性

标签 java

假设我有一个定义如下的 Employee 类:

class Employee {
   private final String id;
   private final String name;
   private final String dept;
   private final Address address;

   public Employee(String id, String name, String dept, Address address) {
    this.id = id;
    this.name = name;
    this.dept = dept;
    this.address = address;
   }

  public String getId() {
    return id; 
  }

  public String getName() {
    return name; 
  }

  public String getDept() {
    return dept; 
  }

  public Address getAddress() {
    return address; 
  }
}

class Address {
  private String addrLine1;
  private String addrLine2;
  ...
}

在上面的代码中,考虑到 Address 对象可以用 setter 改变,Employee 真的是不可变的吗?如果不是,我们是否应该 clone() Employee 返回原来的 Employee?...

最佳答案

如果您的 Address 类具有使其可变的 setter ,那么不,我会说 Employee 不是不可变的,因为它包含的地址可以更改。

关于Java:复合对象的不变性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9501769/

相关文章:

java - Jersey 过滤器不给出 header 值

java - 我有一个 JButton 的 2D 数组,但似乎只有一个 JButton 添加到我的面板中

java - 无法找到所需的索引

java - Java 中的静态导入 Long.parseLong

java - Eclipse Debug模式更改变量

java - JAX-RS 中方法类型的最佳实践

java - Spring 在 AuthenticationSuccessHandler 中 Autowiring session 范围 bean 不起作用

java - 将 main 方法中创建的 arrayList 传递给另一个类

Java - 服务器端口号重试

java - 从运行的 C++ 代码调用运行的 Java 代码,反之亦然