一、有常量类了,Java为什么还要使用枚举类?
为了限制参数的范围
当我们需要一些固定不变的数据时,就可以将其声明为静态常量,以方便复用,然后通过类名点方法名的方式调用获取到常量,虽然我们定义常量时,指定了一些不变的数据,例如 public static final int SPRING = 1; 当我们的某个方法需要传入这个常量时,通过传入的常量执行不同的逻辑,此时就会发现没有办法限制调用者传什么值进来,调用者不仅可以传入 常量 1 ,还能传入其他 int 类型的变量,当然可以在方法上面添加注释提醒调用者,或者在方法中对传入的非法参数进行特殊的处理。
这时就需要使用 枚举类 来解决这个问题,让方法接收一个枚举类,在枚举类中定义需要的数据类型,这样调用者如果不传一个我们定义好的枚举类进来,最多也只能传一个null,如果传一个我们定义好的枚举类,就可以通过枚举类的get方法获取对应的常量。这样就限制了调用者能够传递的数据类型。
枚举类本身就是一个class
将枚举类进行反编译后发现其本身就是一个class 只是继承了 Enum 父类,但还是要注意 我们定义枚举类时不能直接继承 Enum 父类,需要使用 enum 关键字对枚举类进行修饰。
总结:
枚举能够很好的帮我们限定语义,能够在编译阶段就检查每个值的合理性,并且可以用于 switch 判断,以及自带了多个方法提供使用,比普通常量更加方便,当然也不是说必须使用枚举,常量很多场景下也是非常合适的。