2012-08-25 96 views
1

我想要在參數中接收函數,並使用一個參數調用它: 在參數列表中給出參數的調用函數

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

But it call doesn't take any parameter. Any idea on how can I do this?

No matter how much I search, I dont find anything that help me...

+1

我不明白。你想調用一個不帶任何參數的函數,並帶有參數? – Mat

回答

5

A 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"); 
} 
3

Callable定義的call方法沒有定義參數,所以你不能傳遞任何信息。

取決於你想要做的正是你可以編寫自己的接口,用於什麼:

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

然後調用它以不同的方式:

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