パラメータで関数を受け取り、次のように1つのパラメータで呼び出したい。
public static <T> T foo(Callable<T> func)
{
return func.call("bar");
}
ただし、呼び出しはパラメータを取りません。どうすればこれを行うことができますか?
どれだけ検索しても、助けになるものは何も見つかりません...
パラメータで関数を受け取り、次のように1つのパラメータで呼び出したい。
public static <T> T foo(Callable<T> func)
{
return func.call("bar");
}
ただし、呼び出しはパラメータを取りません。どうすればこれを行うことができますか?
どれだけ検索しても、助けになるものは何も見つかりません...
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");
}
call
で定義されているメソッドにはパラメータが定義されていないため、メソッドCallable
に何も渡すことはできません。
正確に何をしたいかに応じて、そのための独自のインターフェースを作成できます。
public interface CallableWithParameters<T> {
public T call(Object... arguments);
}
次に、さまざまな方法でそれを呼び出します。
call();
call(someObject);
call("someString", 42);