摘要:
枚举的优点:可以提供完整的命名空间;
可以任意的增加或是排列枚举中的常量,而无需重新编译客户端代码,因为枚举类型和客户端代码之间
构成一个隔离层,常量没有编译到客户端代码之中;
可以打印出清晰简洁的字符串,易于阅读;
另外,可以给枚举提供任意的域、方法或是接口,增强了枚举功能。
另外,由于枚举没有可访问的构造器,所以他是真正的final类型,可以实现真正意义上的单例模式。事实证明,用工厂方法获构造
单例,虽然构造器是私有的,但是通过Accessible.setAccessible(),可以通过反射的方式,调用构造器,可以形成蓄意的破坏。
虽然这种攻击可以通过在构造函数中判断是不是第二次调用构造函数来避免这种情况,但是基于枚举模式的单例,无疑是最佳的形式。 阅读全文