尽可能地使每个类或者成员不被外界访问。
对于成员(域、方法、嵌套类和嵌套接口)有四种可能的访问级别,下面按照可访问性的递增顺序罗列出来:
- 私有的(private)
- 包级私有的(package-private)
- 受保护的(protected)
- 公有的(public)
实例域决不能是公有的。
类具有共有的静态finla舒祖域,或者返回这种域的访问方法,这几乎总是错误的。
public static final Thing[] VALUES = { ... };修正这个问题有两种方法。可以使共有数组变成私有的,并增加一个共有的不可变列表: private static final Thing[] PRIVATE_VALUES = { ... }; public static final List<Thing> VALUES = Collections.unmodifiableList(Arrays.asList(PRIVATE_VALUES));另一种方法是,可以使数组变成私有的,并添加一个共有方法,它返回私有数组的一个备份: private static final Thing[] PRIVATE_VALUES = { ... }; public static final Thing[] values() { return PRIVATE_VALUES.clone();总而言之,你应该始终尽可能地降低可访问性。你在仔细地设计了一个最小的共有API之后,应该防止把任何散乱的类、接口和成员变成API的一部分。除了共有的静态final域的特殊情形之外,共有类都不应该包含公有域。并且要确保公有静态final域所引用的对象都是不可变的。