Java enum实现自增赋值方式
作者:Ricardo于
这篇文章主要介绍了Java enum实现自增赋值方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
Java enum实现自增赋值
Java枚举类型如何实现类似C++的自增赋值?
在C++中可以这么写:
enum MSG_TYPE {
MSG_LOGIN = 500,
MSG_LOGOUT,
MSG_REGISTER,
MSG_SEARCH,
/* ... */
};但是在Java中就必须写一大坨,必须依次给每个枚举常量赋值,例如下面代码
public enum MSG_TYPE{
MSG_LOGIN(500),
MSG_LOGOUT(501),
MSG_REGISTER(502),
MSG_SEARCH(503),
/* ... */
MSG_ADD(600);
private int egId;
private MSG_TYPE(int val){
this.egId = val
}
public getEgId(){
return this.egId;
}
}大家有没有什么好的替代办法?
java中enum并没那么智能,是从0开始自增的。
可以维护一个static变量实现任意自增:
import java.util.EnumSet;
public class EnumTest {
public static void main(String[] args) {
for (MSG_TYPE msg_type : EnumSet.allOf(MSG_TYPE.class))
{
System.out.println(msg_type.name() + " " +
msg_type.ordinal() + " " +
msg_type.getValue());
}
}
}
enum MSG_TYPE {
MSG_LOGIN(500),
MSG_LOGOUT,
MSG_REGISTER,
MSG_SEARCH,
MSG_ADD(600);
private int value;
private static int nextValue;
MSG_TYPE(){
this(Counter.nextValue);
}
MSG_TYPE(int value){
this.value = value;
Counter.nextValue = value + 1;
}
public int getValue()
{
return value;
}
private static class Counter
{
private static int nextValue = 0;
}
}enum类型自动赋值规则
#include<stdio.h>
enum {a, b, c, d=9, e}day1,day2;
int main()
{
int day;
day1=b;
day2=e;
day=day1+day2;
printf("%d\t",day);
return 0;
}
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
