java枚举的使⽤_java8下枚举通⽤⽅法在项⽬中经常⽤到枚举作为数据字典值和描述的相互转化。
⽤法如下:
public enum CommunicationParamsCom {
COM_1(1, "COM1"), COM_2(2, "485端⼝1"), COM_3(3, "485端⼝2"), COM_31(31, "载波");
private int value;
private String key;
CommunicationParamsCom(int value, String key) {
this.value = value;
this.key = key;
}
public int getValue() {
return value;
}
public String getKey() {
return key;
}
public static CommunicationParamsCom getEnmuByValue(int value) {
for (CommunicationParamsCom item : values()) {
if (value == Value()) {
return item;
}
}
return null;
}
public static CommunicationParamsCom getEnmuByKey(String key) {enum怎么用
if (StringUtil.isEmpty(key)) {
return null;
}
for (CommunicationParamsCom item : values()) {
if (key.Key())) {
return item;
}
}
return null;
}
}
当枚举类多了之后,会存在很多重复的值和描述相互转化的⽅法,类似getEnmuByValue和getEnmuByKey。
最近到⼀种⽅法,利⽤接⼝、接⼝默认⽅法、泛型,实现通⽤的⽅法。同类型的枚举只需要实现该接⼝即可。
代码如下:
1 public interfaceICommonEnum {
2 intgetValue();3
4 String getKey();5
6 static & ICommonEnum> E getEnmu(Integer value, Classclazz) {
quireNonNull(value);
8 EnumSet all =EnumSet.allOf(clazz);
9 return all.stream().filter(e -> e.getValue() == value).findFirst().orElse(null);10 }11
12 static & ICommonEnum> E getEnmu(String key, Classclazz) {quireNonNull(key);14 EnumSet all =EnumSet.allOf(clazz);15 return all.stream().filter(e -> e.getKey().equals(key)).findFirst().orElse(null);16 }17 }
具体⽤法:
1 public enum RtuProtocol implementsICommonEnum {
2 PTL_A(1, "A规约"), PTL_B(2, "B规约");3
4 private intvalue;
5 privateString key;6
7 RtuProtocol(intvalue, String key) {8 this.value =value;9 this.key =key;10 }11
12 public intgetValue() {13 returnvalue;14 }15
16 publicString getKey() {17 returnkey;18 }19 }
转换时的调⽤举例:
RtuProtocol = Enmu(1,RtuProtocol.class)

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