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; }
() -> { statements; }