Lambda简化代码书写的流程

        从JDK8开始,Java引入了Lambda表达式,简化了代码书写,但是,有些语法有些不好理解,下面我将介绍一种:方法入参是接口代码从最原始方法到Lambda表达式优化的流程。

        原始写法:

public class No1Original {


    public static void main(String[] args) {

        // 写法一:
        printString(new PrintString());

    }


    public static void printString(Printable p) {
        p.print("hello word");
    }


    static class PrintString implements Printable {

        @Override
        public void print(String s) {
            System.out.println("写法一:" + s);
        }
    }

}

        优化:使用匿名内部类:

public class No2AnonymousInnerClass {

    public static void main(String[] args) {

        printString(new Printable() {
            @Override
            public void print(String s) {
                System.out.println("写法二:" + s);
            }
        });
    }


    public static void printString(Printable p) {
        p.print("hello word");
    }

}

        进一步优化:使用Lambda表达式:

public class No3Lambda {


    public static void main(String[] args) {


        // 写法三:
        printString(s -> {
            System.out.println("写法三:" + s);
        });

    }


    public static void printString(Printable p) {
        p.print("hello word");
    }


}

        但是, Lambda也有弊端。一个方法有多个参数支持Lambda写法,但是一个类中有多个方法不支持Lambda写法

        一个方法有多个参数支持Lambda写法:

public class No4LambdaMultiParam {

    public static void main(String[] args) {

        printString((a, b) -> {
            System.out.println(a + b);
        });
    }

    public static void printString(PrintableMultiParam p) {
        p.print("a", "b");
    }

}

        一个类中有多个方法不支持Lambda写法:

public class No5LambdaMultiMethod {

    public static void main(String[] args) {
        printString(new PrintableMultiMethod() {
            @Override
            public void print(String s) {
                System.out.println(s);
            }

            @Override
            public void print(String a, String b) {
                System.out.println(a + b);
            }
        });

    }

    public static void printString(PrintableMultiMethod p) {
        p.print("hello word");
        p.print("a", "b");
    }

}

你可能感兴趣的:(c#,开发语言)