Lambda表达式的使用

练习2:

定义一个接口(Flyable),里面定义一个抽象方法:void fly(String s);

定义一个测试类(FlyableDemo),在测试类中提供两个方法

        一个方法是:useFlyable(Flyable f)

        一个方法是主方法,在主方法中调用useFlyable方法

package com.aynu18;

//练习2:
//
//        定义一个接口(Flyable),里面定义一个抽象方法:void fly(String s);
//
//        定义一个测试类(FlyableDemo),在测试类中提供两个方法
//            一个方法是:useFlyable(Flyable f)
//            一个方法是主方法,在主方法中调用useFlyable方法

public class FlyableDemo {
    public static void main(String[] args) {
        //在主方法中调用useFlyable方法
        //匿名内部类
        useFlyable(new Flyable() {
            @Override
            public void fly(String s) {
                System.out.println(s);
                System.out.println("飞机自驾游");
            }
        });
        System.out.println("--------");

        //Lambda
        useFlyable((String s) -> {
            System.out.println(s);
            System.out.println("飞机自驾游");
        });

    }
    private static void useFlyable(Flyable f){
        f.fly("风和日丽,晴空万里");
    }
}
package com.aynu18;

public interface Flyable {
    void fly(String s);
}

 风和日丽,晴空万里
飞机自驾游
--------
风和日丽,晴空万里
飞机自驾游


练习3:

定义一个接口(Addable),里面定义一个抽象方法:int add(int x,int y);

定义一个测试类(AaddableDemo),在测试类中提供两个方法

        一个方法是:useAddable(Addable a)

        一个方法是主方法,在主方法中调用useAddable方法

package com.aynu18;

//练习3:
//
//        定义一个接口(Addable),里面定义一个抽象方法:int add(int x,int y);
//        定义一个测试类(AaddableDemo),在测试类中提供两个方法
//            一个方法是:useAddable(Addable a)
//            一个方法是主方法,在主方法中调用useAddable方法



public class AaddableDemo {
    public static void main(String[] args) {
        //在主方法中调用useAddable方法
        //lambda
        useAddable((int x,int y) ->{
            return x+y;
//            return x-y;
        });
    }
    
    private static void useAddable(Addable a){
        int sum = a.add(10, 20);
        System.out.println(sum);

    }
}
package com.aynu18;

public interface Addable {
    int add(int x,int y);
}

30 


Lambda表达式的省略模式

参数的类型可以省略,但是有多个参数的情况下,不能只省略一个
如果参数有且仅有一个,那么小括号可以省略
如果代码块的语句只有一条可以省略大括号和分号,如果有return,return也要省略掉
package com.aynu18;

public class LambdaDemo {
    public static void main(String[] args) {
//        useAddable((int x,int y)->{
//            return x+y;
//        });

//        useAddable(( int x, int y)->{
//            return x+y;
//    });
        //参数的类型可以省略
//        useAddable(( x, y)->{
//            return x+y;
//        });
        //但是有多个参数的情况下,不能只省略一个
//        useAddable(( int x, y)->{
//            return x+y;
//        });

//        useFlyable((String s)->{
//            System.out.println(s);
//        });

//        useFlyable(( s)->{
//            System.out.println(s);
//        });
        //如果参数有且仅有一个,那么小括号可以省略
//        useFlyable( s->{
//            System.out.println(s);
//        });

        //如果代码块的语句只有一条可以省略大括号和分号
         useFlyable( s->
            System.out.println(s)
        );
         //如果代码块的语句只有一条可以省略大括号和分号,如果有return,return也要省略掉
        useAddable(( x, y)->
             x+y
        );
    }

    private static void useFlyable(Flyable f){
        f.fly("风和日丽,晴空万里");
    }

    private static void useAddable(Addable a){
        int sum = a.add(10,20);
        System.out.println(sum);
    }
}
package com.aynu18;

public interface Flyable {
    void fly(String s);
}
package com.aynu18;

public interface Addable {
    int add(int x,int y);
}

风和日丽,晴空万里
30

你可能感兴趣的:(java)