java如何将使用者<String>传递给方法
所以我有这样的代码:
public ConsumerTestClass(Consumer<String> consumer) {
}
public static void printString(String text) {
System.out.println(text);
}
从另一个类的方法中,我想创建ConsumerTestClass
的对象:
new ConsumerTestClass(/*passing consumer here*/);
作为一个消费者,我想传递ConsumerTestClass::printString
,但要做到这一点,我还需要传递参数,所以看起来:(text) -> ConsumerTestClass.printString(text)
。我的问题是。。。它是传递消费者的唯一选项,还是接受一个参数而不返回结果的方法
# 1 楼答案
方法引用
ConsumerTestClass::printString
只是等价lambda表达式text -> ConsumerTestClass.printString(text)
的一个语法糖方法引用不能用于任何方法。它们只能用于替换单个方法lambda表达式。通常,我们不必将参数传递给方法引用。在这种情况下,由方法
printString
获取的参数会在场景后面自动传递方法引用提供了一种生成比lambdas更简洁的函数对象的方法
因此,将方法引用作为一种好的实践,而不是lambdas
下面是一个完全有效的示例
底线是,在调用
Consumer
的accept
方法时,必须传入参数,就像在上面的构造函数中所做的那样# 2 楼答案
您可以将其传递为:
这是一个方法参考
这取决于您的用例,例如,如果您希望传递两个参数,但仍然不从它们返回任何内容,那么您也可以查看^{} 类
注意:一种特殊情况,当您不想对提供的
Consumer
执行任何操作时,可以选择将其定义为无操作lambda,如下所示: