我有以下代码行:

MyClass{
    Runnable job;
    ...
}


并在其中一种方法中:

this.job = myImporter::importProducts;


现在importProducts是不带参数的方法:

public void importProducts() {
        ...
}


但是我现在需要向该方法添加参数。

添加新参数后,行:

this.job = myImporter::importProducts;


坏了。

有可能修复它吗?

最佳答案

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

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


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

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

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


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

09-16 01:08