java

关注公众号 jb51net

关闭
首页 > 软件编程 > java > Java enum实现自增赋值

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;
}


总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

您可能感兴趣的文章:
阅读全文