所有的枚举都默认继承了java.lang.Enum, 关于父类中的valueOf方法的使用,见如下的代码说明
package cn.cuit.stream;
public enum ActivityType {
WLY_BARCODE_PRODUCE("01"),
WLY_BARCODE_OUTBOUND("02"),
DISTRIBUTER_INBOUND("03"),
DISTRIBUTER_OUTBOUND("04"),
TERMINAL_INBOUND("05"),
CUSTOMER_SCAN_BARCODE("06");
private String code;
ActivityType(String code)
{
this.code = code;
}
public String getCode()
{
return this.code;
}
public void setCode(String code)
{
this.code = code;
}
public static ActivityType fromValue(String code)
{
for (ActivityType s : ActivityType.values())
{
if (s.getCode().equals(code))
{
return s;
}
}
return null;
}
}
package cn.cuit.stream;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
import com.google.common.collect.Lists;
public class Main {
public static void main(String[] args) {
List<ActivityType> activityTypes = Lists.newArrayList(ActivityType.CUSTOMER_SCAN_BARCODE,
ActivityType.DISTRIBUTER_INBOUND, ActivityType.DISTRIBUTER_OUTBOUND, ActivityType.TERMINAL_INBOUND,
ActivityType.WLY_BARCODE_OUTBOUND, ActivityType.WLY_BARCODE_PRODUCE);
ActivityType valueOf = ActivityType.valueOf(ActivityType.WLY_BARCODE_PRODUCE.toString()); // OK
ActivityType valueOf0 = ActivityType.valueOf(ActivityType.class, ActivityType.WLY_BARCODE_PRODUCE.toString()); // OK
System.out.println(ActivityType.WLY_BARCODE_PRODUCE.toString());
System.out.println(ActivityType.valueOf("WLY_BARCODE_PRODUCE"));
System.out.println(
ActivityType.valueOf(ActivityType.WLY_BARCODE_PRODUCE.getDeclaringClass(), "WLY_BARCODE_PRODUCE"));
ActivityType valueOf3 = ActivityType.valueOf("WLY_BARCODE_PRODUCE"); // OK,不能使用枚举的值,而要使用枚举名
// ActivityType valueOf1 = ActivityType.valueOf(ActivityType.class, "03"); //
// 报错,Enum.java:240看具体说明【这个类没有valueOf(String name)一个参数这个方法,但是可以在Java代码中调用,调用时还是走的两个参数的这个valueOf方法】
// ActivityType valueOf2 = ActivityType.valueOf("03"); // 报错,这个方法没有,但是也可以调
List<ActivityType> activityTypeList = Arrays.stream("01>02>03>04>05>06".split(">")).map(s -> {
ActivityType activityType = ActivityType.fromValue(s);
ActivityType activityType2 = Lists.newArrayList(ActivityType.values()).stream()
.filter(x -> s.equals(x.getCode())).findFirst().get();
System.out.println(activityType.getCode() + "---" + activityType2.getCode());
return activityType;
}).collect(Collectors.toList());
// System.out.println(valueOf1);
// System.out.println(valueOf2);
}
}
补充:
********************************* 不积跬步无以至千里,不积小流无以成江海 *********************************