java - 关于不可变类

标签 java immutability

我基于不可变性的概念开发了下面的代码,因为我们知道在java中字符串类是不可变的,所以我也开发了下面的类作为不可变的,请告诉我它是否正确。

   public final class BrokenPerson
{
    private String firstName;
    private String lastName;
    private Date dob;

    public BrokenPerson( String firstName,  String lastName, Date adob)
    {
        this.firstName = firstName;
        this.lastName = lastName;
        this.dob = new Date(adob.getTime());
    }

    public String getFirstName()
    {
        return this.firstName;
    }
    public String getLastName()
    {
        return this.lastName;
    }
    public Date getDOB()
    {
        return  new Date(dob.getTime());


    }
}

最佳答案

final 应用于类使其不可扩展,而不是不可变。

您希望您的成员成为最终

public final class BrokenPerson
{
    private final String firstName;
    private final String lastName;
    private final Date dob;
    //...
}

当然,就像现在一样,类不能被修改,因为私有(private)字段不会被任何成员方法修改,但是,为了严格起见,您应该将它们标记为final

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

相关文章:

c# - 为什么不可变对象(immutable对象)是线程安全的?

java - 如何分析java线程转储?

java - Android XML 解析 - 标签内有标签的 XML

java - 如何在java中用Escape键替换Jbutton?

java - 如何处理您没有预料到的异常,即使它已在文档中声明?

java - Java 中的最终和不可变变量更改

java - 如何使用 Java Servlet 在 WebSphere 7 中启用 CORS

python - 向不可变类型子类添加属性

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

ios - [__NSCFArray insertObject :atIndex:]: mutating method sent to immutable object'