Lambda 表达式,可以取代大部分的匿名内部类,写出更简单优雅的 Java 代码,尤其在集合的遍历和其他集合操作中,可以极大地优化代码结构。
常用方法格式:
@FunctionalInterface;修饰函数式接口,接口中的抽象方法只有一个。主要是和 lambda 表达式一起出现。
/**多参数无返回*/
@FunctionalInterface
public interface MultiParamNoReturn {
void method(int a, int b);
}
// 实现该接口方法
MultiParamNoReturn multiParamNoReturn = (int a, int b) -> {
System.out.println("MultiParamNoReturn param:" + "{" + a +"," + + b +"}");
};
// 简化实现接口方法 要写参数类型必须全写,要不写参数类型必须全不写
MultiParamNoReturn multiParamNoReturn = (a, b) -> {
System.out.println("MultiParamNoReturn param:" + "{" + a +"," + + b +"}");
};
// 调用该方法
MultiParamNoReturn.method(6, 8);
/**无参无返回值*/
@FunctionalInterface
public interface NoParamNoReturn {
void method();
}
// 实现该接口方法
NoParamNoReturn noParamNoReturn = () -> {
System.out.println("NoParamNoReturn");
};
// 简化实现接口方法 方法内只有一条语句,可以省略大括号
NoParamNoReturn noParamNoReturn = () -> System.out.println("NoParamNoReturn");
// 调用该方法
noReturnNoParam.method();
/**一个参数无返回*/
@FunctionalInterface
public interface OneParamNoReturn {
void method(int a);
}
// 实现该接口方法
OneParamNoReturn oneParamNoReturn = (int a) -> {
System.out.println("OneParamNoReturn param:" + a);
};
// 简化实现接口方法 方法内只有一条语句,可以省略大括号
OneParamNoReturn oneParamNoReturn = a -> System.out.println("OneParamNoReturn param:" + a);
// 调用该方法
oneParamNoReturn.method(1);
/**多个参数有返回值*/
@FunctionalInterface
public interface MultiParamReturn {
int method(int a, int b);
}
// 实现该接口方法
MultiParamReturn multiParamReturn = (int a, int b) -> {
return a + b;
};
// 简化实现接口方法 方法内只有一条语句,并且是return语句,可以省略大括号
MultiParamReturn multiParamReturn = ( a, b) -> a + b;
// 调用该方法
multiParamReturn.method(1, 1)
/*** 无参有返回*/
@FunctionalInterface
public interface NoParamReturn {
int method();
}
// 实现该接口方法
NoParamReturn noParamReturn = () -> {
return 1 + 1;
};
// 简化实现接口方法 方法内只有一条语句,并且是return语句,可以省略大括号
NoParamReturn noParamReturn = () -> 1 + 1;
// 调用该方法
noParamReturn.method()
/**一个参数有返回值*/
@FunctionalInterface
public interface OneParamReturn {
int method(int a);
}
// 实现该接口方法
OneParamReturn oneParamReturn = (int a) -> {
return a + 1;
};
// 简化实现接口方法 方法内只有一条语句,并且是return语句,可以省略大括号
OneParamReturn oneParamReturn = a -> a + 1;
// 调用该方法
oneParamReturn.method(2);
lambda 表达式引用方法
方法归属者::方法名 静态方法的归属者为类名,普通方法归属者为对象
public class Exe1 {
public static void main(String[] args) {
//lambda2 引用了已经实现的 doubleNum 方法
NoParamNoReturn lambda = Exe1::doubleNum;
System.out.println(lambda.method());
}
/**
* 要求
* 1.参数数量和类型要与接口中定义的一致
* 2.返回值类型要与接口中定义的一致
*/
public static int doubleNum() {
return a * 2;
}
}