自定义枚举类 Enum 是否可以作为 HashMap 的key

自定义枚举类 Enum 是否可以作为 HashMap 的key?针对这个问题,我们的答案是肯定的,至于为什么我们做如下分析。

1、Enum 为常量

自定义的枚举类为常量,我们说一个类为常量,就像是 java.lang.String 类一样,属于final的类。

2、自定义测试 Enum 类

3、反编译枚举类

3.1、执行:javap -v ClassName 命令

3.2、总结

  1. 自定义的Enum类被编译器优化为final类,类似于String的常量类
  2. 自定义的Enum类继承自 java.lang.Enum 类
  3. 语法糖,自定义枚举通过反编译可以看到该类添加了 values()、valueOf()方法。
  4. equals、hashCode 已经被重写。

通过以上的反编译,我们可以看到最终编译器把我们的自定义Enum类都继承了 java.lang.Enum 类,在这个类里面已经重写了Object类的 equals、hashCode,所以说我们可以放心将 Enum 用于Map的key

4、java.lang.Enum 源代码

0

发表评论

邮箱地址不会被公开。