数値型と文字列型に対応する汎用メソッドを記述しようとしています。このような有界型を持つ方法がありますか?いくつかの型のJava境界型ジェネリック型定義
<T extends Number || String> void print(){...}
ありがとうございます。
数値型と文字列型に対応する汎用メソッドを記述しようとしています。このような有界型を持つ方法がありますか?いくつかの型のJava境界型ジェネリック型定義
<T extends Number || String> void print(){...}
ありがとうございます。
型定義が "複数の型"に対して宣言できる唯一の方法は、継承階層で共通の祖先を共有するか、同じインタフェースを実装するかどうかです。 Number
とString
はいずれもObject
のタイプで、Serializable
を実装していますが、それは共通です。
さらに、あなたの例では、ジェネリックタイプの使用は何ですか?このメソッドはパラメータを受け取らず、何も返しません。たぶん、あなたはこのように、print
メソッドをオーバーロード方がいいでしょう:
void print(String s) {}
void print(Number n) {}
ここでは役立つわけではありませんが、実際には、あなたの型パラメータに、 'T extends ClassFoo&InterfaceA&InterfaceB'という数のインターフェイスを宣言することができます。この場合、「T」はClassFoo、InterfaceA *、および* InterfaceBのサブタイプでなければならず、ClassFooの消去があります。 – yshavit
より良い解決策は、2つのオーバーロードされたメソッドを持つことになります。このことができます
T void print(<T extends Number> number) {}
void print(String s) {}
希望を。
ありがとう!私はこれを考えていましたが、同じ方法を二度書いたくありませんでした)) –
@HelenHambaryan、よろしくお願いします! – Egor
メソッドポリモーフィズムを使用できますか? – artbristol