2

次のコード行があります。

MyClass{
    Runnable job; 
    ...    
}

メソッドの1つの内部:

this.job = myImporter::importProducts;

importProductsは引数なしのメソッドです:

public void importProducts() {
        ...
}

しかし、今このメソッドに引数を追加する必要があります。

新しい引数を追加した後、次の行を実行します。

this.job = myImporter::importProducts;

壊れた。

それを修正することは可能ですか?

4

1 に答える 1

2

メソッド参照に引数を直接「バインド」することはできません。この場合、ラムダを簡単に使用できます。

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

または、状況に合う場合は、適切な引数値でimportProducts1つの引数を呼び出すだけのゼロ引数メソッドを残すことを検討してください。importProducts

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

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

このようにして、メソッド参照は以前と同じように機能します。

于 2015-06-08T08:47:36.727 に答える