一:通用常量类
1:常量类实现
public class DemoConstant {
//普通常量
public static final String configName = "外观";
public static final Integer count = 4000;
public static final char SEPARATE_COMMA = ',';
public static final char SEPARATE_COLON = ':';
public static final char SEPARATE_SPACE = ' ';
//list常量
public static final List<Integer> constantList = Arrays.asList(344, 345);
//map常量
public static final Map<String,String> immutableMap = new ImmutableMap.Builder<String,String>()
.put("k1","v1")
.put("k2","v2")
.build();
//set常量
public static final Set<Integer> constantSet = new HashSet<Integer>(Arrays.asList(1,2));
}
2:调用实现
System.out.println(DemoConstant.configName);
System.out.println(DemoConstant.constantSet.contains(1));
System.out.println(DemoConstant.constantMap.getOrDefault(1, ""));
3:知识点
o:一般一个项目或者某一个比较大的业务模块可以维护一个常量类
a:final表示该变量的值不会改变-换句话说,一个变量的值在声明后不能修改。
b:被static修饰的变量,叫静态变量或类变量;静态变量在内存中只有一个拷贝(节省内存),JVM只为静态分配一次内存,在加载类的过程中完成静态变量的内存分配,可用类名直接访问(方便)
c:Guava提供的ImmutableMap是一个支持多线程环境下面的安全的Map,ImmutableMap中key和value均不能为null,放入null值会抛出NPE
d:Map.getOrDefault(Object key, V defaultValue)方法的作用是:当Map集合中有这个key时,就使用这个key值;如果没有就使用默认值defaultValue。
二:通用枚举类
1:枚举类实现
@Getter
public enum DemoEnum {
DEMO_A(0, "name","desc",Lists.newArrayList(1,2))),
DEMO_B(2 ,"name2" , "desc2" ,Lists.newArrayList(3,4));
private final int id;
private final String name;
private final String desc;
private final List<Integer> list;
DemoEnum(int id, String name, String desc, List<Integer> list) {
this.formulaId = formulaId;
this.formulaName = formulaName;
this.formulaContents = formulaContents;
this.saleTypes = saleTypes;
}
//of方法通过id获得枚举
public static DemoEnum of(int id) {
for (DemoEnum demoenum : DemoEnum.values()) {
if (demoenum.getFormulaId() == formulaId) {
return demoenum;
}
}
return DemoEnum.DEMO_A;
}
//ofName方法通过id获得name
public static DemoEnum ofName(int id) {
for (DemoEnum demoenum : DemoEnum.values()) {
if (demoenum.getFormulaId() == formulaId) {
return demoenum.getName();
}
}
return DemoEnum.DEMO_A.getName();
}
//ofList方法通过list返回枚举配置的list枚举
public static List<DemoEnum> ofList(List<Integer> saleTypes) {
List<DemoEnum> result = Lists.newArrayList();
for (DemoEnum demoenum : DemoEnum.values()) {
for (Integer saleType : saleTypes) {
if (demoenum.getSaleTypes().contains(saleType)) {
result.add(demoenum);
}
}
}
return result.stream().distinct().collect(Collectors.toList());
}
}