Java enum实现自增赋值方式
更新时间:2024年05月16日 09:46:12 作者: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;
}
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
相关文章
Security框架:如何使用CorsFilter解决前端跨域请求问题
这篇文章主要介绍了Security框架:如何使用CorsFilter解决前端跨域请求问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教2021-11-11
教你如何把Eclipse创建的Web项目(非Maven)导入Idea
这篇文章主要介绍了教你如何把Eclipse创建的Web项目(非Maven)导入Idea,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下2021-04-04
Mybatis 中Mapper使用package方式配置报错的解决方案
这篇文章主要介绍了Mybatis 中Mapper使用package方式配置报错的解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教2021-07-07


最新评论