• java 枚举ENUM


    java 枚举类可以实现单例模式,

    因为枚举类的构造方法必须是私有的。


    枚举类常用使用方式

    1. public enum ActionEnum {
    2. add("添加", 0),
    3. delete("删除", 1),
    4. select("查询", 2),
    5. update("修改", 3),
    6. stop("停止", 4),
    7. restart("重启", 5),
    8. check("检查", 6),
    9. download("下载", 7),
    10. upload("上传", 8),
    11. login("登录", 9),
    12. logout("退出", 10),
    13. other("其他", 11);
    14. private final String value;
    15. private final int intVal;
    16. ActionEnum(String value, int intVal) {
    17. this.value = value;
    18. this.intVal = intVal;
    19. }
    20. public static String getNameByIntVal(int intVal) {
    21. for (ActionEnum operateType : values()) {
    22. if (operateType.intVal == intVal)
    23. return operateType.name();
    24. }
    25. return other.name();
    26. }
    27. public String getValue() {
    28. return value;
    29. }
    30. public int getIntVal() {
    31. return intVal;
    32. }
    33. }

    Java 枚举(enum) | 菜鸟教程

     在枚举类中定义抽象方法需要枚举类中的每个成员常量实现

    1. public enum HttpCode {
    2. SUCCEED{
    3. public String getHttpCode(){
    4. return "200";
    5. }
    6. },
    7. ERROR{
    8. public String getHttpCode(){
    9. return "404";
    10. }
    11. };
    12. public abstract String getHttpCode();//定义抽象方法
    13. }

    为什么称为成员常量,并且需要对每个成员常量实现?

    1. public enum HttpCode{
    2. SUCCEED,ERROR;
    3. }

    编译后的源码 

    1. Class HttpCode{
    2. public static final SUCCEED = new HttpCode();
    3. public static final ERROR = new HttpCode();
    4. }

    然后最上面的那种使用方式你就会理解为什么可以那么写了

    举个例子ActionEnum编译后,这样写你就会看懂了

    就是add成员常量指向了new ActionEnum("添加", 0);

    然后ActionEnum里面有private ActionEnum(String value, int intVal)有参构造。所以通过get方法可以获取到,同理你也可以通过set方法修改值,但是实际开发中没必要修改值。

    1. class ActionEnum{
    2. public static final add = new ActionEnum("添加", 0);
    3. private final String value;
    4. private final int intVal;
    5. private ActionEnum(String value, int intVal) {
    6. this.value = value;
    7. this.intVal = intVal;
    8. }
    9. public String getValue() {
    10. return value;
    11. }
    12. public int getIntVal() {
    13. return intVal;
    14. }
    15. }

    另外枚举类还有三个方法

    • values() 返回枚举类中所有的值。
    • ordinal()方法可以找到每个枚举常量的索引,就像数组索引一样。
    • valueOf()方法返回指定字符串值的枚举常量。

  • 相关阅读:
    全局sass变量配置
    如何正确的防止服务器被攻击?103.216.153.x
    Rust(trait、Box指针、自动化测试、迭代器)
    Vue 商城项目开发实战
    ASP.NET dotnet 3.5 实验室信息管理系统LIMS源码
    datawhale - 基于术语词典干预的机器翻译挑战赛 (一)
    idea 模板参数注释 {@link}
    周一见!距离阿里巴巴开源开放周还有3天
    神舟十四号航天员成功出舱
    spring的bean初始化策略
  • 原文地址:https://blog.csdn.net/qq_42572322/article/details/126202546