学习目标:认识Lambda表达式
什么是函数时编程?有什么好处?
使用Lambda函数代替某些匿名内部类对象,从而让代码更加简洁,可读性更好。
Lambda表达式是什么?有什么用?怎么写?
JDK8新增的一种语法,代表函数;可以用来简化并代替函数式接口的匿名内部类。
什么样的接口是一个函数式接口?怎么确保一个接口是函数式接口?
只有一个抽象方法的接口就是函数式接口;
在接口的上一行加上@FunctionalInterface注解即可。
代码实现案例:
package Lambda;
public class Test {
public static void main(String[] args) {
//目标:认识Lambda表达式
//作用:用于替换某些匿名内部类对象,从而让程序更简洁,可读性更好
//只能代替函数式接口的匿名内部类
Swim swim = new Swim() {
@Override
public void Swimming() {
System.out.println("lambda表达式");
}
};
swim.Swimming();
// Swim swim1 = () -> {
// System.out.println("lambda表达式");
// };
// };
//swim1.Swimming();
}
//创建一个函数式接口:只能有一个抽象方法
@FunctionalInterface
interface Swim {
void Swimming();
}
}
使用new方法new一个新的Swim对象重写Swimming方法;
package Lambda;
public class Test {
public static void main(String[] args) {
//目标:认识Lambda表达式
//作用:用于替换某些匿名内部类对象,从而让程序更简洁,可读性更好
//只能代替函数式接口的匿名内部类
// Swim swim = new Swim() {
// @Override
// public void Swimming() {
// System.out.println("lambda表达式");
// }
// };
// swim.Swimming();
Swim swim1 = () -> {
System.out.println("lambda表达式");
};
swim1.Swimming();
};
}
//创建一个函数式接口:只能有一个抽象方法
@FunctionalInterface
interface Swim {
void Swimming();
}
使用Lambda表达式简写方法,同样可以实现Swimming方法的重写。