Lambda 表达式使用
作用:避免匿名内部类定义过多,使得代码简洁
- 有函数式接口才能用 Lambda 表达式
函数式接口:
-
任何接口,如果只包含唯一一个抽象方法,那么它就是一个函数式接口。例如
public interface Runnable{ public abstract void run(); }
-
对于函数式接口,我们可以通过 lamda 表达式创建接口对象
-
推导过程
package com.thread.lambda; /** * 推到 Lambda 表达式 */ public class TestLambda1 { //3.静态内部类 static class Like2 implements ILike { @Override public void lambda() { System.out.println("Like.Lambda2"); } } public static void main(String[] args) { ILike like = new Like(); like.lambda(); like = new Like2(); like.lambda(); //4.局部内部类 class Like3 implements ILike { @Override public void lambda() { System.out.println("Like.Lambda3"); } } like = new Like3(); like.lambda(); //5.匿名内部类,没有类名称,必须借助接口或父类 like = new ILike() { @Override public void lambda() { System.out.println("Like.Lambda4"); } }; like.lambda(); //6.jdk1.8lambda 表达式 简化 like = () -> { System.out.println("Like.Lambda5"); }; /** * 总结: * 简化 ,仅仅只能在一行代码时简化,多行则需要代码块包裹 * 必须是函数式接口,接口只能只能有一个方法才可使用 * 多参数也可以去掉参数类型 * (a,b)->{,} */ like =()-> System.out.println("Like.Lambda5"); like.lambda(); } } //1.定义一个函数接口 interface ILike { void lambda(); } //2.实现类 class Like implements ILike { @Override public void lambda() { System.out.println("Like.Lambda1"); } }
悲观者正确,乐观者成功