java effective --不可变类

1.介绍

java中的不可变类更容易设计、实现和使用。不容易出错,且更加安全。

2.如何设计不可变类

  1. 不要提供任何修改对象状态的方法。
  2. 保证类不会被扩展。使用final修饰class
  3. 使所有的域都为final
  4. 所有的域都为私有的。
  5. 确保对任何可变组件的互斥访问。(如果类具有指向可变对象的域,必须确保客户端的类不能访问到此类)。

3.举例(Guava ImmutableDoubleArray)

@Beta
@GwtCompatible
@Immutable
public final class ImmutableDoubleArray implements Serializable {
  private static final ImmutableDoubleArray EMPTY = new ImmutableDoubleArray(new double[0]);

  /** Returns the empty array. */
  public static ImmutableDoubleArray of() {
    return EMPTY;
  }

  /** Returns an immutable array containing a single value. */
  public static ImmutableDoubleArray of(double e0) {
    return new ImmutableDoubleArray(new double[] {e0});
  }

  /** Returns an immutable array containing the given values, in order. */
  public static ImmutableDoubleArray of(double e0, double e1) {
    return new ImmutableDoubleArray(new double[] {e0, e1});
  }

  /** Returns an immutable array containing the given values, in order. */
  public static ImmutableDoubleArray of(double e0, double e1, double e2) {
    return new ImmutableDoubleArray(new double[] {e0, e1, e2});
  }
  ...
}

猜你喜欢

转载自blog.csdn.net/ai_xiangjuan/article/details/82725540