2016-11-12 5 views
0

をこれは私が使用しているインタフェースは、次のとおりです。Javaの再利用・インタフェース・メソッド

The target type of this expression must be a functional interface 

これは、2番目の実行方法をコメントアウトすると消えます。

私はちょうど方法2.

どのように実行するための新しいインタフェースを作成する必要があり、両方の実行方法を使用して、同じインターフェイスを実行し、ないことができるようにしたいですか?

+2

は、私はあなた 'add'方法を実装だと言います。あなたは 'add((a、b、c) - > System.out.println(" "));'でそれを呼び出す。 'add 'の実装で' c.add(1,2,3,4,5); 'を呼び出すとどうなるでしょうか?なぜそれを期待していますか? –

答えて

1

functional interfaceデザインによっては、1つの方法しか持てないので、何をしようとしているのかを直接確認することはできません。理由は次のとおりです。lambdaを使用して機能インターフェイスを実装できるようにするには、その宣言には、2つのメソッドがある場合、それらを両方とも単一のラムダで実装することはできません。

この問題を回避するには、例えば、可変長引数を使用することができます

@FunctionalInterface 
interface Command { 
void run(int... args); 
} 

add(args -> { int z = args[0] + args[1] + args[2]; }); 
+0

私はメソッドがうまく動作すると思いますが、メソッドを呼び出すために引数をインスタンスに渡す必要があります。 (自動車)args [0])getInCar() より良くなるだろうか? – user7148508

関連する問題