我想在参数中接收函数并使用一个参数调用它:
public static <T> T foo(Callable<T> func)
{
return func.call("bar");
}
但它的调用不带任何参数。我怎么能这样做?
无论我搜索多少,我都找不到任何可以帮助我的东西......
答案 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);