Effective Java之用EnumSet代替位域(三十二)
生活随笔
收集整理的這篇文章主要介紹了
Effective Java之用EnumSet代替位域(三十二)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
什么是位域?為什么用到它?
先來看一個例子:
public class Test {public static final byte STYLE_BOLD = 1<<0; // 1public static final byte STYLE_ITALIC = 1<<1; // 2public static final byte STYLE_UNDERLINE = 1<<2; // 4public static final byte STYLE_STRIKETHROUGH = 1<<3; // 6//Parameter is bitwise OR of zero or more STYLE_ constantspublic void applyStyles(int styles) { ... } }這種方法讓我們將OR位運算將幾個常量合并在一個集合中,稱作位域。
text.applyStyles(STYLE_BLOD | STYLE_ITATIC)
這種方式有著int枚舉的所有缺點,甚至更多
于是我們需要用EnumSet代替位域。
public class Text{public enum Style{BOLD,ITALIC,UNDERLINE,STRIKETHROUGH}public void applyStyles(Set<Style> styles){//實現方案}}只需要客戶端傳入EnumSet即可,EnumSet是一個Enum對象的Set。
text.applyStyles(EnumSet.of(Style.BOLD,Style.ITALIC));
總結
以上是生活随笔為你收集整理的Effective Java之用EnumSet代替位域(三十二)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Effective Java之用实例域代
- 下一篇: Effective Java之EnumM