1、尽可能使类或成员不被外界访问。
2、包含公有可变域的类不是线程安全的。
3、如果final域是可变对象的引用,这是存在隐患的。比如:类具有共有的静态final数组域。
这几乎总是错误的。
public static final Thing[] VSLUES={...};
改进1:
private static final Thing[] PRIVATE_VALUES={...};
public static final List<Thing> VALUES=Collections.unmodifiableList(Arrays.asList(PRIVATE_VALUES));
改进2:用一个公有方法返回数组备份
private static final Thing[] PRIVATE_VALUES={...};
public static final Thing[] values(){
return PRIVATE_VALUES.clone();
}