異なる型のオブジェクトを Set に入れる方法を調べた.

Object 型

すべてのクラスの頂点にたつ Object 型を利用すれば, どんな型だっていれることができる.

ジェネリックスを利用しない場合は, Collection は Object 型で代入される.

2021.11.30追記: 以下記事が壊れた.

<p>
  [sourcecode language="java" title=""] class A { public void show () { System.out.println ("I'm A"); } }
</p>

<p>
  class B { public void show () { System.out.println ("I'm B"); } } public class GenericSample { public static void main (String[] args) { HashSet set = new HashSet (); A a = new A (); B b = new B ();
</p>

<p>
  set.add (a); set.add (b);
</p>

<p>
  for (Object x: set) { if (x instanceof A) { A xx = (A) x; xx.show (); } if (x instanceof B) { B xx = (B) x; xx.show (); } } } } [/sourcecode]
</p>

<p>
  欠点は, set に入れるときに Object 型にキャストされるので, メソッド利用時に, 再度 キャストする必要がある.
</p>

<p>
  [sourcecode language="java" title=""] for (Object x: set) { if (x instanceof A) { A xx = (A) x; xx.show (); } if (x instanceof B) { B xx = (B) x; xx.show (); } } [/sourcecode]
</p>