MST

星途 面试题库

面试题:Java中不可变类的设计原则

请简述在Java中设计不可变类需要遵循哪些原则?并以一个简单的自定义不可变类为例进行说明。
26.9万 热度难度
编程语言Java

知识考点

AI 面试

面试题答案

一键面试

设计不可变类需遵循的原则:

  1. 类声明为final:防止该类被继承,避免子类改变其行为。
  2. 所有成员变量声明为private finalprivate确保成员变量只能在类内部访问,final保证变量一旦赋值后不能再更改。
  3. 不提供修改成员变量的方法(setter方法):杜绝外部代码修改对象状态。
  4. 通过构造函数初始化所有成员变量:确保对象创建时所有状态都已确定。
  5. 对于可变对象的成员变量,在getter方法中返回其拷贝:防止外部代码通过获取可变对象引用而修改对象内部状态。

自定义不可变类示例:

public final class ImmutableClass {
    private final int value;
    private final String name;

    public ImmutableClass(int value, String name) {
        this.value = value;
        this.name = name;
    }

    public int getValue() {
        return value;
    }

    public String getName() {
        return name;
    }
}

在上述示例中,ImmutableClass类被声明为final,成员变量valuename被声明为private final,通过构造函数初始化成员变量,并且没有提供修改成员变量的方法,符合不可变类的设计原则。