美文网首页
java中枚举的定义及使用

java中枚举的定义及使用

作者: 天然卷先生_ | 来源:发表于2020-03-04 16:45 被阅读0次

枚举的定义

当类的对象时有限且固定的,如季节类,它只有春夏秋冬4个对象这种实例有限且固定的类,在 Java 中被称为枚举类;

定义:

public enum ElementType {
    NODE, EDGE
}

这是java中的语法糖实际上会被编译成这样:

public class ElementType extends Enum<ElementType>{
}

所有的枚举类型都会默认继承 java.lang.Enum ,由于java中不支持多继承,所以枚举类型不能继承别的类,但是可以实现接口。

枚举和其他类一样可以有自己的域和方法:

public enum IndicatorRiskLevel {
    /**
     * 低
     */
    LOW(1) {
        @Override
        public void hbaseColorRow(Put put) {
            put.addColumn(RiskRuleColorRowMapper.COLOR_COLUMN, RiskRuleColorRowMapper.getColumnNameIsLow(), Bytes.toBytes(true));
        }
    },
    MID(2) {
        @Override
        public void hbaseColorRow(Put put) {
            put.addColumn(RiskRuleColorRowMapper.COLOR_COLUMN, RiskRuleColorRowMapper.getColumnNameIsMid(), Bytes.toBytes(true));
        }
    },
    /**
     * 高
     */
    HIGH(3) {
        @Override
        public void hbaseColorRow(Put put) {
            put.addColumn(RiskRuleColorRowMapper.COLOR_COLUMN, RiskRuleColorRowMapper.getColumnNameIsHigh(), Bytes.toBytes(true));

        }
    };
    private int code;

    public int getCode() {
        return code;
    }
    public void setCode(int code) {
        this.code = code;
    }

    IndicatorRiskLevel(int code) {
        this.code = code;
    }

    public abstract void hbaseColorRow(Put put);
}

接口中使用枚举作为参数

在spring boot 中 controler层是用枚举作为参数传递,希望传入的是枚举对应的字符串,希望获得的是枚举对象


    @GetMapping("/test")
    public ResultData test(@RequestParam("para") @NotNull ElementType type) {
        System.out.println(type);
        return new ResultData(type);
    }

定义一个 String 转换成Enum的转换器工厂

public class StringToEnumConverterFactory implements ConverterFactory<String, Enum> {
    @Override
    public <T extends Enum> Converter<String, T> getConverter(Class<T> targetType) {
        return source -> {
            if (Strings.isNotBlank(source)) {
                return (T) Enum.valueOf(targetType, source);
            } else {
                return null;
            }
        };
    }
}

配置转换器工厂到WebMvc

@Configuration
@EnableWebMvc
public class WebConfig implements WebMvcConfigurer {
    @Value("${spring.resources.static-locations}")
    private String[] staticLocations;

    @Override
    public void addFormatters(FormatterRegistry registry) {
        registry.addConverterFactory(new StringToEnumConverterFactory());
    }
}

mybatis中使用枚举

与数据库交互时自动将枚举转与字符串(java.lang.Enum#name)或者数字(java.lang.Enum#ordinal)相互转化

添加enum转化配置

mybatis:
  configuration:
    default-enum-type-handler: org.apache.ibatis.type.EnumTypeHandler

使用这个org.apache.ibatis.type.EnumOrdinalTypeHandler这个是数字

本文由博客群发一文多发等运营工具平台 OpenWrite 发布

相关文章

  • Java核心类-枚举类

    Java 进阶——枚举enum使用小结及使用枚举替代你的常量类 通过enum定义的枚举类,和其他的class没有任...

  • java中枚举的定义及使用

    枚举的定义 当类的对象时有限且固定的,如季节类,它只有春夏秋冬4个对象这种实例有限且固定的类,在 Java 中被称...

  • 枚举学习

    java enum枚举类 enum(枚举)类介绍 **java枚举类是一组预定义常量的集合,使用enum关键字声明...

  • 枚举

    定义枚举类 可以在枚举中定义普通方法和抽象方法. 也同样可在枚举类中定义属性,构造方法. 实现原理 Java文件在...

  • 枚举

    一、概念: 实例有限而且固定的类,在java里被称为枚举类。 二、通过enum实现枚举类 使用enum定义的枚举类...

  • Swift 枚举 可选项 ④

    1. 枚举的基本用法 常见枚举的定义及使用 2. 关联值(Associated Values) 有时会将枚举的成员...

  • Java枚举的实现原理

    Java的枚举类,一般的常用方式是使用枚举代表各类选项,既限定了接受值的范围,又便于记忆。如使用枚举定义星期几、性...

  • TypeScript10(枚举类型)

    在javaScript中是没有枚举的概念TS帮我们定义了枚举这个类型 使用枚举 通过enum关键字定义我们的枚举 ...

  • java_枚举enum的使用

    1.项目中对一些相同定义的属性常量定义为枚举进行使用,如下是一个简单的枚举定义: import java.util...

  • SpringBoot 入门笔记(七)自定义枚举类型

    定义枚举类 在抛出异常中使用枚举类型 异常处理类中接受枚举类型

网友评论

      本文标题:java中枚举的定义及使用

      本文链接:https://www.haomeiwen.com/subject/pxdblhtx.html