1

パラメータで関数を受け取り、次のように1つのパラメータで呼び出したい。

public static <T> T foo(Callable<T> func)
{
     return func.call("bar");
}

ただし、呼び出しはパラメータを取りません。どうすればこれを行うことができますか?

どれだけ検索しても、助けになるものは何も見つかりません...

4

2 に答える 2

5

Callable<T>唯一の方法は次のとおりT call()です。

別のものが必要な場合は、次のような別のパラメータタイプを使用する必要があります。

public interface CallableWithString<T> {
    T call(String arg); //Assuming you want a string argument
}

次に、関数は次のことを実行できます。

public static <T> T foo(CallableWithString<T> func) {
    return func.call("bar");
}
于 2012-08-25T16:59:07.107 に答える
3

callで定義されているメソッドにはパラメータが定義されていないため、メソッドCallableに何も渡すことはできません。

正確に何をしたいかに応じて、そのための独自のインターフェースを作成できます。

public interface CallableWithParameters<T> {
  public T call(Object... arguments);
}

次に、さまざまな方法でそれを呼び出します。

call();
call(someObject);
call("someString", 42);
于 2012-08-25T17:01:26.803 に答える