java 利用枚举省略if else


//声明接口
public interface OrderPay {
    void pay();
}

//实现接口
public class AliOrderPay implements OrderPay {
    @Override
    public void pay() {
        System.out.println("支付宝支付");
    }
}
//实现接口
public class WeixinOrderPay implements OrderPay {
    @Override
    public void pay() {
        System.out.println("微信支付");
    }
}


//编写枚举
public enum OrderTypeEnum {

    ALIPAY("支付宝", 1,new AliOrderPay()),
    WEIPAY("微信", 2,new WeixinOrderPay()),


    /** 描述 */
    private String desc;

    /** 枚举值 */
    private int value;

    private OrderPay orderPay;



    private OrderTypeEnum(String desc, int value, OrderPay orderPay)
    {
        this.desc = desc;
        this.value = value;
        this.orderPay = orderPay;
    }

    public int getValue()
    {
        return value;
    }

    public void setValue(int value)
    {
        this.value = value;
    }

    public String getDesc()
    {
        return desc;
    }

    public void setDesc(String desc)
    {
        this.desc = desc;
    }

    public OrderPay getOrderPay() {
        return orderPay;
    }

    public void setOrderPay(OrderPay strategy) {
        this.orderPay = strategy;
    }

    public static OrderTypeEnum getEnum(int value)
    {
        OrderTypeEnum resultEnum = null;
        OrderTypeEnum[] enumAry = OrderTypeEnum.values();

        for (int i = 0; i < enumAry.length; i++)
        {
            if (enumAry[i].getValue() == value)
            {
                resultEnum = enumAry[i];
                break;
            }
        }

        return resultEnum;
    }

    public static Map<String, Map<String, Object>> toMap()
    {
        OrderTypeEnum[] ary = OrderTypeEnum.values();
        Map<String, Map<String, Object>> enumMap = new HashMap<String, Map<String, Object>>();

        for (int num = 0; num < ary.length; num++)
        {
            Map<String, Object> map = new HashMap<String, Object>();
            String key = String.valueOf(getEnum(ary[num].getValue()));
            map.put("desc", ary[num].getDesc());
            map.put("value", ary[num].getValue());
            map.put("orderPay", ary[num].getOrderPay());
            enumMap.put(key, map);
        }

        return enumMap;
    }

    public static List<Map<String, Object>> toList()
    {
        OrderTypeEnum[] ary = OrderTypeEnum.values();
        List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();

        for (int i = 0; i < ary.length; i++)
        {
            Map<String, Object> map = new HashMap<String, Object>();
            map.put("desc", ary[i].getDesc());
            map.put("value", ary[i].getValue());
            map.put("orderPay", ary[i].getOrderPay());
            list.add(map);
        }

        return list;
    }
}

//调用
OrderTypeEnum.getEnum(OrderTypeEnum.ALIPAY.getValue()).getOrderPay().pay();
OrderTypeEnum.getEnum(OrderTypeEnum.WEIPAY.getValue()).getOrderPay().pay();

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值