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


总结

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

相关文章

  • 详解Java对象结构与对象锁的升级

    详解Java对象结构与对象锁的升级

    这篇文章主要为大家详细介绍了Java对象结构与对象锁的升级,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2022-03-03
  • Security框架:如何使用CorsFilter解决前端跨域请求问题

    Security框架:如何使用CorsFilter解决前端跨域请求问题

    这篇文章主要介绍了Security框架:如何使用CorsFilter解决前端跨域请求问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-11-11
  • java调用回调机制详解

    java调用回调机制详解

    这篇文章主要介绍了java调用回调机制详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-07-07
  • 教你如何把Eclipse创建的Web项目(非Maven)导入Idea

    教你如何把Eclipse创建的Web项目(非Maven)导入Idea

    这篇文章主要介绍了教你如何把Eclipse创建的Web项目(非Maven)导入Idea,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-04-04
  • mybatis中的setting配置详解

    mybatis中的setting配置详解

    这篇文章主要给大家介绍了关于mybatis中setting配置的相关资料,文中通过示例代码介绍的非常详细,对大家具有一定的参考学习价值,需要的朋友们下面来一起看看吧。
    2017-06-06
  • IntelliJ IDEA设置JVM运行参数的操作方法

    IntelliJ IDEA设置JVM运行参数的操作方法

    这篇文章主要介绍了IntelliJ IDEA设置JVM运行参数的操作方法,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2018-03-03
  • SpringCloud超详细讲解微服务网关Gateway

    SpringCloud超详细讲解微服务网关Gateway

    这篇文章主要介绍了SpringCloud Gateway微服务网关,负载均衡,熔断和限流,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-07-07
  • java原装代码完成pdf在线预览和pdf打印及下载

    java原装代码完成pdf在线预览和pdf打印及下载

    本文主要介绍了java原装代码完成pdf在线预览和pdf打印及下载的方法,具有一定的参考价值,下面跟着小编一起来看下吧
    2017-02-02
  • Mybatis 中Mapper使用package方式配置报错的解决方案

    Mybatis 中Mapper使用package方式配置报错的解决方案

    这篇文章主要介绍了Mybatis 中Mapper使用package方式配置报错的解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-07-07
  • Java扫描文件夹下所有文件名

    Java扫描文件夹下所有文件名

    这篇文章主要为大家详细介绍了Java扫描文件夹下所有文件名,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-02-02

最新评论