0
点赞
收藏
分享

微信扫一扫

java的枚举


java的枚举真的很有意思。原本在C#里简简单单的事情,在JAVA里面搞得那么复杂。

下面是一个枚举定义:

package com.monkey.zjfwpt.modules.hyjj.entity;

public enum ENormal {
FZXZ (1),ZDXM(2),CLOUD(4);

private final int value;
private ENormal(int value) {
this.value = value;
}

public ENormal valueOf(int value) {
switch (value) {
case 1:
return ENormal.FZXZ;
case 2:
return ENormal.ZDXM;
default:
return null;
}
}
public int value() {
return this.value;
}

}

这哪是什么枚举,就是一个类啊。而且还有点莫名其妙。本来也可以最简单的:

public enum ENormal {
FZXZ,ZDXM,CLOUD;
}

之所以要像第一个例子那样写一大坨,就是为了类型转换。像本例,枚举ENormal实际上是一个整型,但在java中,不能这样写:

int en = (int)ENormal.FZXZ;

要这样:

int en = ENormal.FZXZ.value();

为了这个​​value()​​,就是我们写一大坨的原因。

当然啦,如果是采用最简单的方式

public enum ENormal {
FZXZ,ZDXM,CLOUD;
}

也不是不行,但我们只能通过读枚举元素下标(序号)的方式来获得整型值:

int en = ENormal.ordinal();

从0开始吧好像。不过这样有个风险,就是万一中途插入一个新的枚举元素,岂不乱套了。


举报

相关推荐

【Java】枚举

Java 枚举

Java枚举

Java——枚举

《Java枚举》

【Java 枚举】

0 条评论