Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/306.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 我想我知道Enum的一切,但这是如何工作的呢_Java_Enums - Fatal编程技术网

Java 我想我知道Enum的一切,但这是如何工作的呢

Java 我想我知道Enum的一切,但这是如何工作的呢,java,enums,Java,Enums,我想我知道Enum的一切,但这是如何工作的呢 (感谢您提供代码 /** * Message Type * * @author Fumihiko Shiroyama (fu.shiroyama@gmail.com) */ public enum MessageType { NORMAL(1 << 7), IMAGE(1 << 8); private int flag; MessageType(int flag) { thi

我想我知道Enum的一切,但这是如何工作的呢

(感谢您提供代码

/**
 * 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;
    }
}
/**
*消息类型
*
*@作者白山文彦(傅。shiroyama@gmail.com)
*/
公共枚举消息类型{

正常(1在这里工作?

它工作是因为MessageType在编译代码时,每个字段(正常和图像)都需要一个常量整数


一旦编译,这个NORMAL(1它就会工作,因为MessageType在编译代码时,每个字段(NORMAL和IMAGE)都需要一个常量整数


编译之后,这个NORMAL(1名为MessageType的枚举类型定义了一个构造函数

MessageType(int flag) {
    this.flag = flag;
}
对于每个带有传递值标志的枚举常量(正常,图像),在创建常量时传递:


NORMAL(1名为MessageType的枚举类型定义构造函数

MessageType(int flag) {
    this.flag = flag;
}
对于每个带有传递值标志的枚举常量(正常,图像),在创建常量时传递:


正常(1)它是按位左移(
是按位右移(不是在发布的代码中)。我知道按位移位是如何工作的,但不是这样。它的目的是什么它在
int
中设置一位(每个
消息类型都有不同的一位)。大概是为了创建一个位掩码。
标志能否正常(1
1这是一个按位左移(
是一个按位右移(而不是在发布的代码中)。我知道按位移位是如何工作的,但不是这样的。它在
int
中设置一个位的目的是什么(每个
消息类型为不同的
设置一个位)。大概是为了创建位掩码。
标志是否可以正常(1
1