只有一种例外: 公有静态final域来暴露常量(名称由大写字母单词下划线隔开)...., 并添加公有的静态工厂.优点: 提供了缓存能力, 可以提供多个不同名字的静态方法, 使相同参数类型可以构造出不同的对象(用构造器就不行)....(constant interface): 没有包含任何方法, 只包含静态的final域, 每个域都导出一个常量...., 依然必须实现这个接口; 所有子类的命名空间也会被接口中的常量污染.如果要导出常量, 可以有几种合理的选择方案:如果这些常量与某个现有的类或者接口紧密相关, 就应该把这些常量添加到这个类或者接口中.如果这些常量最好被看作枚举类型的成员..., 就应该用枚举类型来导出这些常量.使用不可实例化的工具类来导出这些常量.总结: 接口应该只被用来定义类型, 它们不应该被用来导出常量.第23条 类层次优于标签类有时候, 可能会遇到带有两种甚至更多种风格的实例的类