我虽然知道关于Enum的一切,但这是如何工作的
(感谢Fumihiko Shiroyama代码
/**
* Message Type
*
* @author Fumihiko Shiroyama (fu.shiroyama@gmail.com)
*/
public enum MessageType {
NORMAL(1 << 7), IMAGE(1 << 8);
private int flag;
MessageType(int flag) {
this.flag = flag;
}
public int getFlag() {
return flag;
}
}
特别是&gt;&gt;在这里工作?
答案 0 :(得分:2)
它的工作原理是因为 MessageType 在每个字段(NORMAL和IMAGE)中都需要在编译代码时使用一个常量整数...
编译后, NORMAL(1 <&lt; 7)将被计算为 NORMAL(128)且规则未被破坏
哪条规则:
构造函数中的那些值在编译时必须是常量
答案 1 :(得分:0)
名为MessageType的枚举类型定义了一个构造函数
MessageType(int flag) {
this.flag = flag;
}
对于每个带有传递值标志的枚举常量(NORMAL,IMAGE),在创建常量时传递:
正常(1 <&lt; 7) 和 图像(1 <&lt; 8)
稍后可以检索值标志:
NORMAL.getFlag()
看一下这个page,它还有更多的例子