タグ

2012年9月3日のブックマーク (1件)

  • ジェネリックなクラスの階層を遡って適用された具象型を得る

    イレイジャではジェネリクスの何が消えるのかにて親クラスを継承する際に投入しているジェネリクス型パラメータはclassの情報として残っていることを述べました。 これを利用すると、 public class A<X> { public class B<Y> extends A<Y> { public class C extends B<String> { といった継承階層があった場合に、C.classからA.classの<X>にどのような具象型が適用されているのか(上記例ではString型)をリフレクションで取得することができます。 Aの型パラメータのプレースホルダ<X>を取得 Bでsuper-classの型パラメータに渡されたTypeを取得 2のTypeが具象型ではなく型パラメータ<Y>なのでさらにサブクラスを走査 Cでsuper-classの型パラメータに渡されたTypeを取得 B<Y>の