java8 lambda 替代if-else

lambda优雅的替换if-else

    • 让人作呕的if语句
    • 简单的lambda应用
    • 实际的一些应用

让人作呕的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()));
    }

实际的一些应用

。。。未完待续

你可能感兴趣的:(java,8,lambda)