Discuss / Java / 关于 enum class 和 EnumMap

关于 enum class 和 EnumMap

Topic source

日落有星

#1 Created at ... [Delete] [Delete and Lock User]

我存在几个疑问:

1. 既然 EnumMap 比 HashMap 要效率更高,更少的空间浪费,那么是不是在实际使用中应该尽可能的多使用 EnumMap 呢?只需要自定义一个 enum 类,就可以满足任意的 Key 值。而且 Map 也不存在顺序问题,因此也不用考虑 enum 类插入新参数导致顺序打乱的问题。

2. 引用评论区的一个讨论:

银发的index:自定义的枚举类也可以使用enummap吗?

廖雪峰:你写的类和jdk自带的类没有区别。

老师您的这句话是怎么理解呢?

是表明 自定义的枚举类和自带的类没区别,自带的类能用,自定义的类也肯定可以用;还是表明 自定义的类和自带的类没区别,因此没必要去自定义?

如果是后者,自定义的 enum 类不是能够更好地满足任意个数的 key 和 更易懂的 key 命名嘛?所以有没有必要自己重新新建一个 enum 类呢?

3. 假设新建了 enum 类,对于新建的 enum 类是否还需要覆写 equals 方法?(枚举类不存在重复,应该就不存在相同的 key 值指向不同的 value,不同的 key 指向相同的 value。是否就说明不需要 equals 方法呢?)

PS: 其实写完问题之后心里差不多也有了答案,但是还是希望能够听听标准答案。

实际使用中

哪有那么多 枚举 给你 用。。。。

云外方天

#3 Created at ... [Delete] [Delete and Lock User]

枚举类定义的是常量,常量的值初始化后不能再改变;

枚举类是通过定义的常量实现实例化的,而且因为上面的这个特性,枚举类的每个实例对象也是唯一的,无法通过new关键字创建实例。

所以枚举类只适合常量有限(或者说实例有限)的使用场景。


  • 1

Reply