函数<string,consumer <string =“”>&gt; java 8

时间:2017-06-27 14:15:08

标签: java lambda

lambda函数下面的内容是什么?

public class FunctionInterface {
    public static void main(String[] args) {

        Function<String, Consumer<Integer>> secondFunction = s -> x -> System.out.println(x);

        System.out.println(secondFunction.apply("Text"));
    }
}

上面的代码是打印一些随机值,如何使其打印文本?

2 个答案:

答案 0 :(得分:4)

您的变量secondFunctionFunction,需要String并返回Consumer<Integer>。在这一行:

System.out.println(secondFunction.apply("Text"));

您正在apply上调用Function,这将返回Consumer<Integer>,然后您打印该对象,这将导致toString被调用{ {1}}对象(然后打印字符串)。

它不会运行lambda表达式,这是您所期望的。试试这个:

Consumer<Integer>

答案 1 :(得分:0)

你说你想打印“文字”这可能更容易吗? 您不需要使用Function返回使用者。我很困惑,目的是什么?

Consumer<String> consumer = System.out::println;
consumer.accept("Text");