使用 Lambda 创建静态内部函数?

Use Lambda to create static inner functions?

是否可以使用 lambda 创建静态内部函数?

具体来说,我想执行以下操作:

function myFunc(){
    Map<Integer, String> myMap = new HashMap <Integer, String> ();
    myMap.put(1,"A");
    String head = () -> myMap.get(1);
    myMap.put(1,"B");

    System.out.println(head);   // Should print B
}

所有 lambda 都是内部函数。你写的是Supplier<String>:

Supplier<String> getHead = () -> myMap.get(1);
System.out.println(getHead.get());

您可以通过查看 java.util.function 包来了解存在哪些类型的函数。

但是请注意,完成此操作的标准方法(自 lambdas 出现之前)就是简单地编写一个 private 方法并调用它,传统样式涉及的开销较少,尽管该开销是否很大又是一个问题。