Java enum實(shí)現(xiàn)自增賦值方式
Java enum實(shí)現(xiàn)自增賦值
Java枚舉類型如何實(shí)現(xiàn)類似C++的自增賦值?
在C++中可以這么寫:
enum MSG_TYPE { MSG_LOGIN = 500, MSG_LOGOUT, MSG_REGISTER, MSG_SEARCH, /* ... */ };
但是在Java中就必須寫一大坨,必須依次給每個(gè)枚舉常量賦值,例如下面代碼
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; } }
大家有沒(méi)有什么好的替代辦法?
java中enum并沒(méi)那么智能,是從0開(kāi)始自增的。
可以維護(hù)一個(gè)static變量實(shí)現(xiàn)任意自增:
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類型自動(dòng)賦值規(guī)則
#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; }
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
詳解Java對(duì)象結(jié)構(gòu)與對(duì)象鎖的升級(jí)
這篇文章主要為大家詳細(xì)介紹了Java對(duì)象結(jié)構(gòu)與對(duì)象鎖的升級(jí),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助2022-03-03Security框架:如何使用CorsFilter解決前端跨域請(qǐng)求問(wèn)題
這篇文章主要介紹了Security框架:如何使用CorsFilter解決前端跨域請(qǐng)求問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-11-11教你如何把Eclipse創(chuàng)建的Web項(xiàng)目(非Maven)導(dǎo)入Idea
這篇文章主要介紹了教你如何把Eclipse創(chuàng)建的Web項(xiàng)目(非Maven)導(dǎo)入Idea,本文通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-04-04IntelliJ IDEA設(shè)置JVM運(yùn)行參數(shù)的操作方法
這篇文章主要介紹了IntelliJ IDEA設(shè)置JVM運(yùn)行參數(shù)的操作方法,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2018-03-03SpringCloud超詳細(xì)講解微服務(wù)網(wǎng)關(guān)Gateway
這篇文章主要介紹了SpringCloud Gateway微服務(wù)網(wǎng)關(guān),負(fù)載均衡,熔斷和限流,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-07-07java原裝代碼完成pdf在線預(yù)覽和pdf打印及下載
本文主要介紹了java原裝代碼完成pdf在線預(yù)覽和pdf打印及下載的方法,具有一定的參考價(jià)值,下面跟著小編一起來(lái)看下吧2017-02-02Mybatis 中Mapper使用package方式配置報(bào)錯(cuò)的解決方案
這篇文章主要介紹了Mybatis 中Mapper使用package方式配置報(bào)錯(cuò)的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-07-07