2012-01-05 15 views

答えて

1

型定義が "複数の型"に対して宣言できる唯一の方法は、継承階層で共通の祖先を共有するか、同じインタフェースを実装するかどうかです。 NumberStringはいずれもObjectのタイプで、Serializableを実装していますが、それは共通です。

さらに、あなたの例では、ジェネリックタイプの使用は何ですか?このメソッドはパラメータを受け取らず、何も返しません。たぶん、あなたはこのように、printメソッドをオーバーロード方がいいでしょう:

void print(String s) {} 
void print(Number n) {} 
+3

ここでは役立つわけではありませんが、実際には、あなたの型パラメータに、 'T extends ClassFoo&InterfaceA&InterfaceB'という数のインターフェイスを宣言することができます。この場合、「T」はClassFoo、InterfaceA *、および* InterfaceBのサブタイプでなければならず、ClassFooの消去があります。 – yshavit

2

より良い解決策は、2つのオーバーロードされたメソッドを持つことになります。このことができます

T void print(<T extends Number> number) {} 

void print(String s) {} 

希望を。

+0

ありがとう!私はこれを考えていましたが、同じ方法を二度書いたくありませんでした)) –

+0

@HelenHambaryan、よろしくお願いします! – Egor

関連する問題