lambda(替代匿名类)

jdk1.8匿名内部类之前的写法

public class Lambda {

    public static void main(String[] args) {
        //匿名内部类
        School school = new School() {
            @Override
            public void run(String jdk) {
                System.out.println("这是jdk"+jdk+"的特性");
            }
        };
        school.run("彭守星");
    }
}
interface School{
    public void run(String name);
}

jdk1.8的写法(lambda表达式)

package com.test.new8;

public class Lambda {

    public static void main(String[] args) {
        School school=(String name,int age) -> {return name;}; 
        String run = school.run("11", 16);
        System.out.println(run);


    }
}
@FunctionalInterface
interface School{
    public String run(String name,int age);
}

lambda注意事项

  • Lambda表达式只能针对函数式接口使用(函数式接口:接口里只有一个抽象方法),使用注解(@FunctionalInterface)可以强制接口是函数式接口。
  • Lambda 表达式由三个部分组成:第一部分为一个括号内用逗号分隔的形式参数,参数是函数式接口里面方法的参数;第二部分为一个箭头符号:->;第三部为方法体,可以是表达式和代码块。
(parameters) -> expression ##一条语句的时候
(parameters) -> { statements; } ##多条语句的时候,需要return返回值的时候
() -> { statements; } ##没有参数

你可能感兴趣的:(jdk1-8新特性)