首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

6.32 运用EnumSet代替bit属性设置

2013-08-10 
6.32 使用EnumSet代替bit属性设置public class Text {//样式定义public static final int STYLE_BOLD10

6.32 使用EnumSet代替bit属性设置
public class Text {//样式定义public static final int STYLE_BOLD=1<<0;//1public static final int STYLE_ITALIC=1<<1;//2public static final int STYLE_UNDERLINE=1<<2;//4//应用样式public void applyStyles(int styles){//............}}

?

以下代码给Text对象同时设置多种样式:

text.applyStyles(Text.STYLE_BOLD|Text.STYLE_ITALIC);

?

使用枚举类和EnumSet可以实现相同的功能,EnumSet底层使用bit vector表示所包含的多个枚举量,因此性能上与直接使用int常量差不多,如下:

public class Text {public enum Style{STYLE_BOLD,STYLE_ITALIC,STYLE_UNDERLINE};//应用样式,参数类型为EnumSetpublic void applyStyles(EnumSet<Style> styles){//............}}

?

以下代码给Text对象同时设置多种样式:

text.applyStyles(EnumSet.of(Style.STYLE_BOLD,Style.STYLE_ITALIC));

?

EnumSet的缺点在于:截止到JDK6,还没有很好的方式创建不可变的EnumSet对象。如果使用Collections.unmodifiableSet()创建不可变的EnumSet对象,会影响程序性能

?

?

?

热点排行