

Javaのジェネリクスについて型を指定するときに(TypeScriptのUnion型のように)"String型またはLong型"というような型の指定はできないのでしょうか？

イメージ（？）

[code]

    class Test<T extends String | extends Long>{
     ......
    }
    
[/code]


CC BY-SA 4.0
2021-05-22T16:30:44.470
76014
2021-05-23T03:10:20.230
2021-05-23T00:52:13.947
19110
45225
question
java java8
Javaのジェネリクスでユニオン型をextendsするようなことがしたい


Java はそもそも多重継承できないので、あるクラス T が複数クラスを extends することはできないので、ジェネリクスで指定する T
にしてもその原則に従うはずです。

なので、ジェネリクスでは extends 一つと、implements（複数も可）を組み合わせた

[code]

    class Test<T extends ClassA & InterfaceB & InterfaceC>{
     ......
    }
    
[/code]

みたいな形式ならば可能（参考：[Bounded Type Parameters: Multiple
Bounds](https://docs.oracle.com/javase/tutorial/java/generics/bounded.html)）である一方、複数クラスを指定する方法はないということでしょう。


CC BY-SA 4.0
2021-05-23T03:10:20.230
76017
2021-05-23T03:10:20.230
7290
76014
answer