java怎么定义枚举_java中枚举的定义及使⽤
枚举的定义
当类的对象时有限且固定的,如季节类,它只有春夏秋冬4个对象这种实例有限且固定的类,在 Java 中被称为枚举类;
定义:
public enum ElementType {
NODE, EDGE
}
这是java中的语法糖实际上会被编译成这样:
public class ElementType extends Enum{
}
所有的枚举类型都会默认继承 java.lang.Enum ,由于java中不⽀持多继承,所以枚举类型不能继承别的类,但是可以实现接⼝。
枚举和其他类⼀样可以有⾃⼰的域和⽅法:
public enum IndicatorRiskLevel {
/**
* 低
*/
LOW(1) {enum怎么用
@Override
public void hbaseColorRow(Put put) {
put.addColumn(RiskRuleColorRowMapper.COLOR_COLUMN, ColumnNameIsLow(), Bytes(true));
}
},
MID(2) {
@Override
public void hbaseColorRow(Put put) {
put.addColumn(RiskRuleColorRowMapper.COLOR_COLUMN, ColumnNameIsMid(), Bytes(true));
}
},
/**
* ⾼
*/
@Override
public void hbaseColorRow(Put put) {
put.addColumn(RiskRuleColorRowMapper.COLOR_COLUMN, ColumnNameIsHigh(), Bytes(true));
}
};
private int code;
public int getCode() {
return code;
}
public void setCode(int code) {
}
IndicatorRiskLevel(int 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 {
@Override
public Converter getConverter(Class targetType) {
return source -> {
if (Strings.isNotBlank(source)) {
return (T) Enum.valueOf(targetType, source);
} else {
}
};
}
}
配置转换器⼯⼚到WebMvc
@Configuration
@EnableWebMvc
public class WebConfig implements WebMvcConfigurer {
@Value("${sources.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.pe.EnumTypeHandler
使⽤这个org.pe.EnumOrdinalTypeHandler这个是数字
本⽂由博客发⼀⽂多发等运营⼯具平台 OpenWrite 发布

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。