異なる型のオブジェクトを 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>