凪瀬 Blog
Programming SHOT BAR

目次

Blog 利用状況
  • 投稿数 - 260
  • 記事 - 0
  • コメント - 6847
  • トラックバック - 192
ニュース
広告
  • Java開発者募集中
  • 経歴不問
  • 腕に自信のある方
  • 富山市内
  • (株)凪瀬アーキテクツ
アクセサリ
  • あわせて読みたい
凪瀬悠輝(なぎせ ゆうき)
  • Java技術者
  • お茶好き。カクテル好き。
  • 所属は(株)凪瀬アーキテクツ
  • Twitter:@nagise

書庫

日記カテゴリ

 

Javaのジェネリクスはコンパイル時に解決され、classファイルになった時にはジェネリクスの型情報は残されていません。そのためイレイジャ(型消去:type erasure)方式と呼ばれます。

と、ひとくちで言っても意味がよく分からないのでちょっと掘り下げてみましょう。

インスタンスからジェネリクスの型情報は拾えない

リフレクションを用いたとしても、インスタンスからジェネリクス型パラメータが何であるかを取得することはできません。

List<String> stringList = new ArrayList<String>();

のような変数stringListがあったとして、ここから<String>を取得するということができないのです。これが消えてしまった部分。

この変数stringListに対する各種操作において、その型の安全はコンパイル時に精査され、 実行時にはあくまでObject型引数のメソッドを通したやりとりで動くのです。

クラス宣言に関わるジェネリクス型情報は拾える

しかし、型の宣言に関する部分はリフレクションで拾うことができます。ここが混乱する部分ですね。

  • 親クラスを継承する際に投入しているジェネリクス型パラメータ
  • インターフェースを実装する際に投入しているジェネリクス型パラメータ
  • メソッドの引数・戻り値に用いられているジェネリックな型とそこに渡される型パラメータ
  • フィールドに用いられているジェネリックな型とそこに渡される型パラメータ

といった情報は拾えるわけです。

public class Piyo
    extends Hoge<String>
    implements IHoge<String> {

  private List<String> value;

  public List<String> get() {
    return this.value;
  }
  public void set(List<String> value) {
    this.value = value;
  }
}

といったコードがあった場合、リフレクションで親クラスがHoge<String>型であることを拾えます。インターフェースも同等。 また、フィールドやメソッドの戻り値・引数がList<String>型であることも拾うことができます。

投稿日時 : 2008年10月13日 20:21
コメント
  • # ジェネリックなクラスの階層を遡って適用された具象型を得る
    凪瀬 Blog
    Posted @ 2008/10/29 0:50
    ジェネリックなクラスの階層を遡って適用された具象型を得る
  • # ロレックス最高品質時計
    athvja@softbank.jp
    Posted @ 2017/08/19 21:14
    通販最大80%OFF、送料無料
    正規販売代理店【即日発送】
    新品入荷大特価!
    【品質至上】送料無料!
    安い 品質と価格に優れる信用ある!
    直営店 限定SALE極上本革バッグ!
    超美品』正規品※激安販売※
    豪華アイテムファクトリーアウトレットオンラインストア、
    2017本物しいおよび高品質激安通販.
    【人気沸騰】AllJapan最安値!
    スタイリッシュで高品質の本物
    【激安大特集】100%品質保証
    人気爆発,超歓迎、2017【最安値】!
    2017年新作!
    【楽天市場】5☆大好評、制作精巧!!
    ロレックス最高品質時計 http://www.kopii.net/products/p3/3/index.htm
  • # re: イレイジャではジェネリクスの何が消えるのか
    Esther Longmore
    Posted @ 2018/07/22 13:09
    ブランド(コピー商品)激安市場
    http://bit.ly/2BI0KBH
    ━…━…━…━…━…━…━…━…━…━…━…
    ルイ.ヴィトン、シャネル、エルメス、クロエ、ブラダ、ブルガリ ドルチェ&ガッバ―ナ、バレンシアガ偽物(コピー商品)のブランドのバッグ、財布の販売、通販。
    ━…━…━…━…━…━…━…━…━…━…━…
    ○各種のブランド(コピー商品)の指輪.ネックレス
    ○各種のブランド(コピー商品)のベルト
    ○各種のブランド(コピー商品)のマフラー
    ○ スタイルが多い、品質がよい、価格が低い!
    ○ N品質 シリアル付きも有り 付属品完備!
    ○必ずご満足頂ける品質の商品のみ販売しております.
    ○ 品質を最大限本物と同等とする為に相応の材質にて製作している為です.
    ○ 絶対に満足して頂ける品のみ皆様にお届け致します.
    人気の売れ筋商品を多数取り揃えております。
    全て激安特価でご提供.お願いします。
    http://bit.ly/2BIAk2x
タイトル  
名前  
Url
コメント