关于Enum枚举的valueOf方法的使用

所有的枚举都默认继承了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);
	}
}

 补充:

********************************* 不积跬步无以至千里,不积小流无以成江海 *********************************

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值