2013-10-15 28 views
6

Javaでジェネリック型の安全なオブザーバを作成したいと思います。 C++では、私はC++ 11から、次のような可変長引数テンプレートを使用してそれを行う簡単にできます。JavaのC++バリデーションテンプレートに相当します。

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

今、Javaで、私は何ができる最善のは、次のとおりです。

今 ​​

、更新をC++のように異なる型の引数を複数取ることはできません。誰かがこの問題の解決策を提案できますか?

ありがとうございます。すべての引数が/拡張する場合

+0

私は本当にあなたの問題を理解していません。 'void update(T ... args);を使わないのはなぜですか? – Daniel

+1

すべての引数がユースケースで必ずしも同じ型であるとは限りません。 –

答えて

4

あなたが言うことができるTを実装:

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

これはサブタイプではなく 'List 'のみを許可します。たとえば、「T」が「Number」であるとします。この構造体は 'List 'をパラメータとして許可しません。私は 'List 'がより適切であると言います。 –

+0

アドバイスをいただきありがとうございます。私は自分の答えを更新した –

0

あなたが事前に可変引数の形式を使用しますが、グループの引数はありませんので、タプルのようなクラスを作成している頭に浮かぶ唯一のもの。しかし、この答えは、使用シナリオに大きく依存します。
1対1アナログはありません。

関連する問題