通过参数中的方法调用方法

时间:2017-01-26 12:00:10

标签: java lambda

如何调用通过Java 8中的方法中的参数传递的方法?

小例我有这样的方法:

void output(String text) {
    System.out.println(text)
}

现在我想将该方法传递给另一个应该调用output并为文本设置内容的类。这可能吗?

1 个答案:

答案 0 :(得分:5)

要传递函数的类必须采用类型Consumer<String>的参数。此类表示一个函数,该函数接受某种类型的参数(在本例中为String),并且返回类型为voidConsumer有一个方法accept,它接受​​参数并调用函数。

你可以像这样创建你的课程:

class Test {
    Test(Consumer<String> consumer) {
        consumer.accept("This is a string!");
    }
}

现在,当你想要实例化这个类时,你需要将你的函数传递给它:

Test t = new Test(this::output);

::表示法称为方法参考。 this(在冒号之前)表示该方法位于您所在的对象中。例如,如果它是{{1}上的静态方法,则可以更改为MyClass::output如果它是对象MyClass上的方法,则为myObject::output