lambda表达式格式

Lambda表达式

Lambda是一个匿名函数,我们可以把 Lambda表达式理解为是一段可以传递的代码(将代码像数据一样进行传递)。可以写出更简洁、更灵活的代码。作为一种更紧凑的代码风格,使Java的语言表达能力得到了提升。

Lambda表达式左侧:Lambda 表达式的参数列表;
Lambda表达式右侧:Lambda 表达式中所需执行的功能, 即 Lambda体;

Lambda表达式的语法格式

  • 语法格式一:无参数,无返回值
public void test1(){
    int num = 0; //匿名函数用成员变量,jdk1.7前,必须final修饰

    Runnable r = new Runnable() {
        @Override
        public void run() {
            System.out.println("Hello World!" + num);
        }
    };
    r.run();

    //Lambda表达式写法
    Runnable r1 = () -> System.out.println("Hello Lambda!");
    r1.run();
}
  • 语法格式二:有一个参数,并且无返回值
public void test2(){
    //Consumer 消费型接口 属于Java8 内置的四大核心函数式接口之一
    //若只有一个参数,小括号可以省略不写
    //Consumer<String> con = (x) -> System.out.println(x);
   Consumer<String> con = x -> System.out.println(x);
   con.accept("武汉加油!");
}
  • 语法格式三:两个以上的参数,有返回值,并且 Lambda 体中有多条语句
public void test3(){
    Comparator<Integer> com = (x, y) -> {
        System.out.println("函数式接口");
        return Integer.compare(x, y);
    };
}
  • 语法格式四:若Lambda体中只有一条语句, return 和 大括号都可以省略不写
public void test4(){
    Comparator<Integer> com = (x, y) -> Integer.compare(x, y);
}
  • 语法格式五:Lambda表达式的参数列表的数据类型可以省略不写,因为JVM编译器通过上下文推断出,数据类型,即“类型推断”
public void test5(){
    //String[] strs;
    //strs = {"aaa", "bbb", "ccc"};

    List<String> list = new ArrayList<>();
    show(new HashMap<>());
}

public void show(Map<String, Integer> map){

}

二、Lambda 表达式需要“函数式接口”的支持
函数式接口:接口中只有一个抽象方法的接口,称为函数式接口。 可以使用注解 @FunctionalInterface 修饰,可以检查是否是函数式接口

@FunctionalInterface //函数式接口的注解
public interface MyFun {
	public Integer getValue(Integer num);
}

//对一个数进行运算
@Test
public void test6(){
    System.out.println(operation(100, (x) -> x * x));
    System.out.println(operation(200, (y) -> y + 200));
}
发布了22 篇原创文章 · 获赞 6 · 访问量 465

猜你喜欢

转载自blog.csdn.net/qq_33732195/article/details/104570114