Lambda表达式
一、函数式接口
-
任何接口,如果只包含唯一一个抽象方法,那么他就是一个函数式接口。
public interface ILike { void lambda(); } -
对于函数式接口,我们可以通过lambda表达式来创建该接口的对象。
二、推导Lambda表达式
-
静态内部类
public class Lambda { static class Like extends ILike { @Override public void lambda() { System.out.println("i like lambda"); } } public static void main(String[] args) { ILike iLike = new Like(); iLike.lambda(); } } -
局部内部类
public class Lambda { public static void main(String[] args) { class Like extends ILike { @Override public void lambda() { System.out.println("i like lambda"); } } ILike iLike = new Like(); iLike.lambda(); } } -
匿名内部类
public class Lambda { public static void main(String[] args) { ILike like = new ILike() { @Override public void lambda() { System.out.println("i like lambda匿名内部类"); } }; like.lambda(); } } -
Lambda表达式
public class Lambda { public static void main(String[] args) { ILike iLike = () -> {System.out.println("Lambda表达式!");}; iLike.lambda(); } }
三、为什么要使用Lambda表达式
- 避免匿名内部类定义过多
- 可以让代码看起来更简洁
- 去掉了一堆没有意义的代码,只留下核心的逻辑
举例
public class TestLambda {
public static void main(String[] args) {
Ilove love = (boolean k) -> {System.out.println("i love you is -> " + k);};
love.lova(true);
// 多个参数,类型要去掉都去掉
Ilove love1 = (k) -> {System.out.println("i love you is -> " + k);};
love1.lova(true);
// 多个参数类型,必须用括号包裹
Ilove love2 = k -> {System.out.println("i love you is -> " + k);};
love2.lova(true);
// 只有一行代码时可以去掉代码块,如果有多行,那么就用代码块包裹
Ilove love3 = k -> System.out.println("i love you is -> " + k);
love3.lova(true);
}
}
interface Ilove {
void lova(boolean k);
}

浙公网安备 33010602011771号