我所知道的:只能final或有效final地从 lambda 内部访问局部变量。static变量也可以访问,也可以修改。我不知道的是:为什么这段代码不抛出异常?public static String sampleFunction(String param1, int param2) { new Thread(() -> { try { Thread.sleep(100000); } catch (InterruptedException e) { } // accessing method parameter here... String _param1 = param1; System.out.println(_param1); }).start(); return "";}public static void Main(String[] arguments) { sampleFunction("to print", 9); System.out.println("function returned");}因此,考虑到参数在返回时被释放,这发生在尝试从异步运行的lambda表达式内部访问它们之前,为什么不 throw Exception?我测试了代码,编译并有趣的是“返回”消息比“打印”早。这意味着我可以在方法返回后访问方法参数。
添加回答
举报
0/150
提交
取消