在日常工作中,总会涉及事物的二元状态,什么是二元状态呢?
就是一个事物的两面,比如说灯泡的开关、文件的有效与无效,等等等等
那么就该有个枚举去控制转换这个状态了,那么Boolean.FALSE
、Boolean.TRUE
不能正常去使用么
这只是两个布尔的值,实际上需要将其转为中文表述,转为0
,1
这样的值
如此一来,还是写个枚举方便点
至于java
枚举,相信大家也不陌生了,直接上代码
package com.banmoon.business.enums;
import cn.hutool.core.text.CharSequenceUtil;
import lombok.AllArgsConstructor;
import lombok.Getter;
import java.util.Arrays;
/**
* 公共枚举,是和否
*/
@Getter
@AllArgsConstructor
public enum YesNoEnum implements MyEnum<Integer> {
/**
* 否
*/
NO(0, "N", "否", Boolean.FALSE),
/**
* 是
*/
YES(1, "Y", "是", Boolean.TRUE),
;
private final Integer code;
private final String label;
private final String msg;
private final Boolean bool;
public static Integer[] getArrays() {
return Arrays.stream(values()).map(YesNoEnum::getCode).toArray(Integer[]::new);
}
public static String getMsgByCode(Integer code) {
return Arrays.stream(values()).filter(e -> e.getCode().equals(code)).findFirst().map(YesNoEnum::getMsg).orElse(null);
}
public static Boolean getBoolByCode(Integer code) {
return Arrays.stream(values()).filter(e -> e.getCode().equals(code)).findFirst().map(YesNoEnum::getBool).orElse(false);
}
public static String getMsgByLabel(String letter) {
return Arrays.stream(values()).filter(e -> CharSequenceUtil.equalsIgnoreCase(letter, e.getLabel())).findFirst().map(YesNoEnum::getMsg).orElse(null);
}
public static Integer getCodeByCondition(Boolean condition) {
return Boolean.TRUE.equals(condition) ? YES.getCode() : NO.getCode();
}
}
还有一个MyEnum
的接口,当时规定出来是为了给自定义valid
校验使用的
package com.banmoon.business.enums;
public interface MyEnum<T> {
T getCode();
String getMsg();
}
有了上面的YesNoEnum.java
的枚举后,很多转换就都可以用此枚举实现
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。