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; }
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。