如何调用通过Java 8中的方法中的参数传递的方法?
小例子我有这样的方法:
void output(String text) { System.out.println(text) }
现在我想将该方法传递给另一个应该调用output
和设置文本内容的类.那可能吗?
要传递函数的类必须采用类型的参数Consumer
.此类表示一个函数,它接受某种类型的参数(String
在本例中),并具有返回类型void
.A Consumer
有一个accept
获取参数并调用函数的方法.
你可以像这样创建你的类:
class Test { Test(Consumerconsumer) { consumer.accept("This is a string!"); } }
现在,当您想要实例化此类时,您需要将您的函数传递给它,如下所示:
Test t = new Test(this::output);
的::
符号被称为方法参考.在this
(前冒号)意味着该方法位于你所在的对象,它是可以改变的,例如,MyClass::output
如果它是一个静态方法MyClass
,或者myObject::output
如果它是对象的一个方法myObject
.