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

枚举int形式

2013-03-10 
枚举int模式在枚举类型(enum)还没有引入的时候,也就是在JDK1.5以前,表示枚举类型的常用模式是声明一组具名

枚举int模式

在枚举类型(enum)还没有引入的时候,也就是在JDK1.5以前,表示枚举类型的常用模式是声明一组具名的int常量。

下面是一个具体的例子,该类表示一段文本(text),该文本具有一些样式,比如加粗,加删除线,加下划线等。

输出:Text Style:-bold-underscore


如果想应用多于1个的样式,可以用|操作符进行连接。如果想知道该文本是否应用了某个样式,可以用&操作符来验证。

注意到每个常量值是2的倍数,并且该类型为int,一共有32位。那么以上样式用二进制表示如下:

STYLE_BOLD:

0000 0000 0000 0000 0000 0000 0000 0001

STYLE_ITALIC:

0000 0000 0000 0000 0000 0000 0000 0010

STYLE_UNDERLINE:

0000 0000 0000 0000 0000 0000 0000 0100

STYLE_STRIKE:

0000 0000 0000 0000 0000 0000 0000 1000


假如应用加粗,斜体和下划线样式:

int styles = STYLE_BOLD | STYLE_ITALIC | STYLE_STRIKE

因为 1 | 0 = 1 , 1 | 1 = 1 , 0 | 0 = 0

所以 styles = 0000 0000 0000 0000 0000 0000 0000 1011  // 11

如果想判断该样式是否包含某种样式,则将该样式与具体样式进行&运算。

比如判断是否应用了加粗样式:

0000 0000 0000 0000 0000 0000 0000 1011 & 0000 0000 0000 0000 0000 0000 0000 0001 = 0000 0000 0000 0000 0000 0000 0000 0001

即 styles & STYLE_BOLD != 1 or styles & STYLE_BOLD == STYLE_BOLD

目前应用了枚举int模式的有java.nio.channels.SelectionKey,它的枚举int常量包括(OP_READ,OP_WRITE,OP_ACCEPT,OP_CONNECT),还有android.app.Notification,它的枚举int常量包括(DEFAULT_SOUND,DEFAULT_LIGHTS,DEFAULT_VIBRATE,DEFAULT_ALL)


因为枚举int模式在类型安全性和使用方便性方面没有任何帮助,所以推荐使用枚举类型来代替。

热点排行