Lambda表达式函数
一、lambda函数中引用了对象
lambda函数中使用了对象参数,这个对象,在后面进行了操作
在执行run()方法时,此时的message 已经append 了 ‘Howdy,’和‘world!’
/**
* 测试对象的引用。输出:Howdy, world!
*/
public class VariableTest {
public static void test_01() {
StringBuilder message = new StringBuilder();
Runnable r = () -> System.out.println(message);
message.append("Howdy, ");
message.append("world!");
r.run();
}
public static void main(String[] args) {
test_01();
}
}
二、引用外部变量
先定义一个函数式接口
@FunctionalInterface
public interface UnitFun {
void exec();
}
新建一个测试类,在lambda中引用变量
public static void test_02() {
String message = "引用变量测试";
UnitFun r = () -> System.out.println(message);
r.exec();
}
执行结果
引用变量测试
这里引用外部变量,变量不强制需要使用 final 修饰
如果,这个变量在后面进行了变更,在编译时会报:effectively final 的错误

三、lambda函数的延时执行
lambda函数类似于回调函数,可以延后执行lambda代码块中的代码
static void test_03() {
Map<String, String> map = new HashMap<>();
UnitFun r = () -> {
System.out.println("-- 验证的函数 --");
String test = map.get("test");
System.out.println(test);
};
System.out.println("--- 执行主函数 ----");
map.put("test", "写入测试数据");
r.exec();
}
执行结果:
--- 执行主函数 ----
-- 验证的函数 --
写入测试数据

浙公网安备 33010602011771号