是否可以通过方法引用传递参数?

时间:2015-06-08 08:38:32

标签: java java-8 argument-passing method-reference

我有以下代码行:

MyClass{
    Runnable job; 
    ...    
}

并在其中一个方法中:

this.job = myImporter::importProducts;

现在importProducts是没有参数的方法:

public void importProducts() {
        ...
}

但我现在需要为这个方法添加参数。

添加新参数后,行:

this.job = myImporter::importProducts;

破了。

是否可以修复它?

1 个答案:

答案 0 :(得分:2)

不可能"绑定"和参数直接对方法引用。在这种情况下,您可以轻松使用lambda:

this.job = () -> myImporter.importProducts(myNewArgument);

或者,如果它适合您的情况,请考虑保留零参数importProducts方法,该方法只使用适当的参数值调用单参数importProducts

public void importProducts() {
    importProducts(myNewArgument);
}

private void importProducts(Type arg) {
    ...
}

这样您的方法引用将像以前一样工作。