枚举是在Java1.5版本后出现的,它与类常量和静态常量相比的有点主要表现在以下4各方面:
· 枚举常量更简单: 只需定义枚举项名称,无需定义其值,而接口常量或类常量必须定义其值;
· 枚举常量属于稳态型:枚举常量在使用时无需关注其值而直接调用,接口常量或类常量可能需要关注其值;
· 枚举具有内置方法:每个枚举都是java.lang.Enum的子类,该基类提供了诸如获得排序值得ordinal方法、compareTo比较方法等,大大简化常量的访问;
· 枚举可以自定义方法:枚举常量不仅可以定义静态方法,还可以定义非静态方法,而且还能从根本上杜绝常量类被实例化。
注意:每个枚举项都是该枚举的一个实例,那我们在枚举中定义的静态方法既可以在类中引用,也可以在实例中引用。枚举类不能有继承,无法做扩展,而接口常量和类常量可以通过继承进行扩展。
因此,在项目开发中,推荐使用枚举常量代替接口常量或类常量。