List<T>
に、メソッドに宣言しなかった一連の許可された型を渡すにはどうすればよいですか。リストで使用するJavaの型を制限する
など。私はリストを使用している場合、私はParent
のすべてのインスタンスを置くことができます
public void method(List<Object> myList);
と:私はList<Object>
を使用している場合、私はそのリストにすべてを置くことができ
// Pseudo code
public void method(List<Integer OR Boolean OR String> myList);
:整数、ブールとString
に種類を制限そのサブクラスをそのリストに追加します。
public void method(List<Parent> myList);
これで十分です私はそれらのサブクラス(AllowedTypeA extends Parent
)を宣言する人です。しかし、私が使用したいクラスのオーナーでないときはどうすればいいですか(Integer
Parent
を延長することはできません)?
あなたは表現する "または" Javaで制約を入力することはできません。そのような制約が必要な実装しようとしている方法を説明できますか? –
ジェネリックはおそらく間違った解決策です。彼らは "ジェネリック"なので、その名前です。特定の型のみをサポートできる場合(またはその型に固有のロジックを持つ場合)、特定の型ごとにメソッドがオーバーロードされている可能性があります。 – mellamokb
@mellamokbこの場合、オーバーロードがうまくいかないかもしれませんが、 'List <...>'引数のすべてが 'List'に消去されるので、他のパラメータ(または名前が異なっていて、それがオーバーロードしていない場合) )。 –