前言
封装通用枚举,减少每个枚举类中雷同的方法编写
一、编写枚举类
@Getter
@ToString
@AllArgsConstructor
public enum Area implements BaseEnum {
CD("028", "成都"),
BJ("010", "北京");
private String name;
private String code;
}
@Getter
@NoArgsConstructor
@AllArgsConstructor
public enum Human implements BaseEnum{
MAN("1", "男性"),
WOMEN("0", "女性");
private String name;
private String code;
}
@Getter
@Setter
@AllArgsConstructor
@NoArgsConstructor
@Builder
@ToString
public class Optional {
private String name;
private String code;
}
二、编写通用接口
public interface BaseEnum {
/**
* 获取name值
* @return
*/
String getName();
/**
* 获取code值
* @return
*/
String getCode();
/**
* 根据code获取name
* @param code
* @param clazz
* @return
*/
static BaseEnum getNameByCode(String code, Class<? extends BaseEnum> clazz){
BaseEnum baseEnum;
BaseEnum[] enumConstants = clazz.getEnumConstants();
String s = (enumConstants != null && enumConstants.length > 0) ? "aa" : null;
baseEnum = (BaseEnum) TUtils.presentOrElseHandlData(s).presentOrElseHandlData(
obj -> {
List<BaseEnum> enumList = Arrays.asList(enumConstants);
List<BaseEnum> list = enumList.stream().filter(a -> StringUtils.equals(a.getCode(), code)).collect(Collectors.toList());
String s1 = CollectionUtil.isNotEmpty(list) ? "aa" : null;
return TUtils.supplierHandle(s1).supplierHandle(
() -> list.get(0),
() -> {
}
);
},
obj -> null
);
return baseEnum ;
}
/**
* 根据name获取code
* @param name
* @param clazz
* @return
*/
static BaseEnum getCodeByName(String name, Class<? extends BaseEnum> clazz){
BaseEnum baseEnum;
BaseEnum[] enumConstants = clazz.getEnumConstants();
String s = (enumConstants != null && enumConstants.length > 0) ? "aa" : null;
baseEnum = (BaseEnum) TUtils.presentOrElseHandlData(s).presentOrElseHandlData(
obj -> {
List<BaseEnum> enumList = Arrays.asList(enumConstants);
List<BaseEnum> list = enumList.stream().filter(a -> StringUtils.equals(a.getName(), name)).collect(Collectors.toList());
String s1 = CollectionUtil.isNotEmpty(list) ? "aa" : null;
return TUtils.supplierHandle(s1).supplierHandle(
() -> list.get(0),
() -> {
}
);
},
obj -> null
);
return baseEnum ;
}
/**
* 获取所有的
*/
static List<Optional> getEnumConstants(Class<? extends BaseEnum> clazz){
List<Optional> list;
BaseEnum[] enumConstants = clazz.getEnumConstants();
String s = (enumConstants != null && enumConstants.length > 0) ? "aa" : null;
list = (List<Optional>) TUtils.presentOrElseHandlData(s).presentOrElseHandlData(
obj -> {
List<BaseEnum> enumList = Arrays.asList(enumConstants);
List<Optional> optionalList = enumList.stream().map(a -> Optional.builder().code(a.getCode()).name(a.getName()).build()).collect(Collectors.toList());
return optionalList;
},
obj -> Lists.newArrayList()
);
return list ;
}
}
三、编写测试类
public class Demo32 {
public static void main(String[] args) {
User user = new User();
user.setName("lili").setAge(12).setAddr("成都");
User user1 = new User().setName("lisi").setAge(11);
System.out.println("user = " + user);
System.out.println("user1 = " + user1);
String str = "aa";
TUtils.isTure(StringUtils.equals(str, "aaa")).throwMessage("测试111");
TUtils.isTure(false).throwMessage("测试222");
TUtils.isTrueOrFalse(true).isTrueOrFalse(
() -> run1(),
() -> run2()
);
Apple apple = new Apple(1, "jy", 1);
TUtils.presentOrElseHandler(null).presentOrElseHandle(
obj -> action(apple),
() -> {
Demo32 demo32 = new Demo32();
demo32.run();
}
);
Apple data = (Apple) TUtils.presentOrElseHandlData(null).presentOrElseHandlData(
obj -> function1(apple),
obj -> function2()
);
System.out.println("data = " + data);
Apple o = (Apple) TUtils.supplierHandle(null).supplierHandle(
() -> supplier(apple),
() -> runn()
);
System.out.println(o);
}
public static void run1() {
Apple apple = new Apple(1, "jy1", 1);
System.out.println("apple = " + apple);
}
public static void run2() {
Apple apple = new Apple(2, "jy2", 2);
System.out.println("apple = " + apple);
}
public static void action(Apple apple) {
apple.setArea("cd");
System.out.println("apple = " + apple);
}
public void run() {
System.out.println("没有对象,怎么办");
}
public static Apple function1(Apple apple) {
apple.setArea("成都");
System.out.println("apple = " + apple);
return apple;
}
public static Apple function2() {
return new Apple();
}
public static Apple supplier(Apple apple) {
apple.setArea("简阳");
return apple;
}
public static void runn() {
System.out.println("没有对象,就没有办法了,只能返回个null");
}
}
总结
记录下,其中有部分是工具类-if判断编写的判断工具类