更糟糕的是, 它会导致初级用户把字符串常量硬编码到客户端代码中, 而不是使用适当的field....(一维和多维的例子.)第38条 用接口模拟可扩展的枚举Java语言上是不支持枚举继承的, 这并不意外, 因为枚举的扩展最后证明都不是什么好点子....最终, 扩展会导致设计和实现的许多方面变得复杂起来.但是有时候会有这种需求, 例子: 定义操作的枚举类型, 允许用户扩展自己的操作.解决方法: 基本操作的枚举实现接口, 用户可以定义新的操作类型枚举,...如果API是根据接口编写的, 那么在可以使用基础枚举类型的任何地方, 也都可以使用这些枚举.第39条 注解优先于命名模式Java 1.5之前, 一般使用命名模式(naming pattern)表明有些程序元素需要通过某种工具或者框架进行特殊处理...这样做有很多缺点, 注解很好地解决了这些问题.代码例子:@Test注解.有参数的@ExceptionTest注解.Java 8的@Repeatable注解.第40条 坚持使用Override注解举例: