是否可以使用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
}
答案 0 :(得分:4)
所有lambdas都是内部函数。你写的那个是Supplier<String>
:
Supplier<String> getHead = () -> myMap.get(1);
System.out.println(getHead.get());
通过查看java.util.function
包,您可以查看存在哪些类型的功能。
但请注意,实现此目标的标准方法(自lambdas之前)只是编写一个private
方法并调用它,而传统样式将涉及较少的开销,尽管这种开销是否有意义是另一个问题