使用参数列表中给出的参数调用函数

时间:2012-08-25 16:54:53

标签: java

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

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

但它的调用不带任何参数。我怎么能这样做?

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

2 个答案:

答案 0 :(得分: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");
}

答案 1 :(得分:3)

call中定义的Callable方法没有定义任何参数,因此您无法向其传递任何内容。

根据您想要做的事情,您可以为此编写自己的界面:

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

然后你用不同的方式来称呼它:

call();
call(someObject);
call("someString", 42);