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

时间:2015-03-09 05:52:30

标签: java lambda java-8

是否可以使用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
}

1 个答案:

答案 0 :(得分:4)

所有lambdas都是内部函数。你写的那个是Supplier<String>

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

通过查看java.util.function包,您可以查看存在哪些类型的功能。

但请注意,实现此目标的标准方法(自lambdas之前)只是编写一个private方法并调用它,而传统样式将涉及较少的开销,尽管这种开销是否有意义是另一个问题