关于枚举,enum、Enum、EnumSet、RegularEnumSet、JumboEnumSet
Apache Commons Lang。
在版本3中,enum相關的工具就留下EnumUtils。
?
首先,
所有enum,都默認實現了抽象類 java.lang.Enum 。所以,所有enum都具備Enum中的方法,而且,還有一個values()方法,雖然找不到,但的確可以使用。
其次,
JDK提供了 java.util.EnumSet ,專門用于存儲同一個enum類型的常量(需要指出,enum中聲明的枚舉都是常量,可以用 "==" 判斷下)。
其方法就不在這里介紹了,有興趣的寫一下就明白了。
官方的說法是,EnumSet效率極高,因為使用的是bit vectors。
EnumSet是一個抽象類,其實現有兩個:RegularEnumSet、JumboEnumSet。
什么時候用這兩個類呢?EnumSet中的方法會自動選擇,選擇的依據是enum中定義的常量個數。
如果數量不多于64,那就是RegularEnumSet;反之,則是JumboEnumSet。所以大多時候,我們用的都是RegularEnumSet。
說到這里,其實commons-lang3中的EnumUtils有幾個方法,EnumUtils.generateBitVector(..)等,其限制也是不能超過64,因為內部是使用 8 bytes 來存儲的。
?
?
?
與50位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的关于枚举,enum、Enum、EnumSet、RegularEnumSet、JumboEnumSet的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: com.alibaba.druid.sq
- 下一篇: 日志分析利器splunk的搭建、使用、破