我期待在Java中創建特定類型的接口(儘管這適用於常規類)。這個接口需要包含一些方法,比如invoke
;它將根據提供的泛型類型參數使用不同數量的參數進行調用。在Java中,我可以指定任何數量的泛型類型參數嗎?
舉個例子:
public interface Foo<T...> {
public void invoke(T... args);
}
// In some other class
public static Foo<Float, String, Integer> bar = new Foo<Float, String, Integer>() {
@Override
public void invoke(Float arg1, String arg2, Integer arg3) {
// Do whatever
}
};
爲了解釋,簡單地說,這到底是怎麼被使用(並提供一定的上下文中),考慮一類Delegator
:類需要不同數量的泛型類型,並有一個方法 - invoke
,帶有這些參數類型。該方法將其參數傳遞給列表中的對象:IDelegate
的實例,該實例採用相同的通用類型。這允許Delegator
在幾個委託方法(在IDelegate
內定義)之間進行選擇,而不必爲每個特定的參數類型列表創建新的類。
是否有類似的東西可用?我已經閱讀了C++中的variadic templates,但在Java中找不到類似的東西。有這樣的東西嗎?如果不是,那麼模擬相同數據模型的最簡潔方法是什麼?
說得那樣:'Pair
'就足夠了。但是由於沒有人想要一對'整數,一對<字符串,一對<字節,一對,所以像這樣的東西通常以不同的方式解決。要麼完全放棄類型安全,要麼使用像http://www.javatuples.org/這樣的庫。 – Marco13