2013-10-15 69 views
6

我希望用Java編寫一個通用類型安全觀察器。在C++中,我可以很容易地通過使用可變參數模板從C++ 11,像下面這樣做:現在Java中C++ variadic模板的等效代碼

class Observer<typename... T> 
{ 
    void update(T... args); 
}; 

,在Java中,我能做的最好的是:

​​

現在,更新不能像C++一樣接受多種不同類型的參數。有人可以提出解決這個問題的辦法嗎?

在此先感謝。

+0

我真的不明白你的問題。爲什麼不使用'void update(T ... args);'? – Daniel

+1

並非所有的參數在他的用例中都必須是相同的類型。 –

回答

4

如果所有的參數擴展/實現牛逼,你可以說:

class Observer<T>{ 
     void update(List<? extends T> args){} 
} 
+2

這隻會允許'列表'而不是子類型。比方說,'T'是'Number';這個構造不允許'List '作爲參數。我會說'List '會更合適。 –

+0

感謝您的建議。我更新了我的答案 –

0

想到的是創造一個像元組類,所以你不使用可變參數的形式,但組ARGS事先的唯一的事情。但是,這個答案很大程度上取決於使用情況。
沒有一對一的模擬。