1

我想在参数中接收一个函数并用一个参数调用它:

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

但它调用不带任何参数。关于我该怎么做的任何想法?

无论我搜索多少,我都找不到任何对我有帮助的东西......

4

2 回答 2

5

ACallable<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 回答