java8 lambda 替代if-else

让人作呕的if语句

     enum Type {
        APPLE("apple"),
        ORANGE("orange"),
        PEAR("pear"),
        OTHER("other");

        private final String type;

        Type(String type) {
            this.type = type;
        }

        public String getVal() {
            return type;
        }
    }

    private void printFruitType(String type) {
        if (Type.APPLE.getVal().equals(type)) {
            System.out.println(Type.APPLE.getVal());
        }
        if (Type.ORANGE.getVal().equals(type)) {
            System.out.println(Type.ORANGE.getVal());
        }
        if (Type.PEAR.getVal().equals(type)) {
            System.out.println(Type.PEAR.getVal());
        }
        if (Type.OTHER.getVal().equals(type)) {
            System.out.println(Type.OTHER.getVal());
        }
    }

    @Test
    public void fruit() {
        List<String> fruits = Lists.newArrayList("orange", "pear", "apple", "other");
        // 回去随机的水果类型
        int index = (int) (Math.random() * 4);
        printFruitType(fruits.get(index));
    }

简单的lambda应用

    enum Type {
        APPLE("apple"),
        ORANGE("orange"),
        PEAR("pear"),
        OTHER("other");

        private final String type;

        Type(String type) {
            this.type = type;
        }

        public String getVal() {
            return type;
        }
    }
    /**
     * 定义一个lambda 函数
     */
    @FunctionalInterface
    interface Handler {
        void handler();
    }

    /**
     * 注册水果类型和lambda方法
     * @return Map
     */
    private Map<Type, Handler> register() {
        return new HashMap<Type, Handler>() {{
            putIfAbsent(Type.PEAR, () -> System.out.println("pear"));
            putIfAbsent(Type.ORANGE, () -> System.out.println("orange"));
            putIfAbsent(Type.APPLE, () -> System.out.println("apple"));
            putIfAbsent(Type.OTHER, () -> System.out.println("other"));
        }};
    }

    @Test
    public void functionPrint(){
        Map<Type, Handler> handlerMap = register();
        List<String> fruits = Lists.newArrayList("orange", "pear", "apple", "other");
        // 获取随机的水果类型
        int index = (int) (Math.random() * 4);
        String type = fruits.get(index);
        System.out.println(type);
        handlerMap.get(Type.valueOf(type.toUpperCase()));
    }

实际的一些应用

。。。未完待续

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值