如何调用通过Java 8中的方法中的参数传递的方法?
小例我有这样的方法:
void output(String text) {
System.out.println(text)
}
现在我想将该方法传递给另一个应该调用output
并为文本设置内容的类。这可能吗?
答案 0 :(得分:5)
要传递函数的类必须采用类型Consumer<String>
的参数。此类表示一个函数,该函数接受某种类型的参数(在本例中为String
),并且返回类型为void
。 Consumer
有一个方法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
。