Javaでペアのリストを比較する状況があります。私はこれをApacheのPairインターフェイスから使用しています。2つの汎用パラメータを持つクラスのJavaジェネリック型チェックでは、同じタイプのクラスのみを保持する必要があります。
Aペアの左右の値がComparableを実装するタイプのものとすることができるので、以下のように、私はリストを宣言します。
List<Pair<Comparable, Comparable>> listOfPairs;
左と右の値は常に、例えば、同じタイプである必要がありますPair<String, String>
またはPair<Integer, Integer>
であり、両方の種類のペアを同じリストに追加できます。
これは動作します:
Pair<Comparable, Comparable> p1 = new ImmutablePair<>("a", "b");
Pair<Comparable, Comparable> p2 = new ImmutablePair<>(2, 3);
listOfPairs.add(p1);
listOfPairs.add(p2);
これも動作します:
Pair<Comparable, Comparable> p3 = new ImmutablePair<>("a", 2);
listOfPairs.add(p3);
は、それが追加されるとペアの種類は、同じタイプであることを保証するために、型チェックを持つことが可能ですリストに、例えばコンパイル時に失敗する?
いいえ、ジェネリックのみではありません。リストへのアクセスをカプセル化し、メソッドの汎用引数を制御する必要があります。 – Kayaman