トップ «前の日記(2005-04-07 [木]) 最新 次の日記(2005-04-09 [土])» 編集

SewiGの日記

2004|01|04|05|06|07|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|

2005-04-08 [金] [長年日記]

[Programming] Erasure

J2SE 5.0からGenericsが導入され型のキャストをコンパイル時にやらせて、しかも書き方がC++っぽくてC++のテンプレートと同じことができると思っていたらそうでもありませんでした。

C++と同様の機能を実現するためにVMの仕様を変更してしまっては、1.4までのクラスが使用できなくなるのでJavaではErasureを使用しています。Erasureではパラメータ情報からObjectとキャストの処理をコンパイラが行います。また、Erasure使用によって、以下の制限があります。

  • 型変数Eに対して、基本データ型を指定することはできない
  • 型変数Eのオブジェクトを、直接生成することはできない
  • 型変数Eの配列を生成することはできない
  • メソッドの戻り値として型変数Eの配列を返すようにしても、Objectの配列となる
  • 型変数は、staticメンバとstatic初期化子には適用できない
  • イレイジャの結果、メソッドのシグニチャが同じになるメソッドは定義できない

(JAVA PRESS Vol37)

本日のツッコミ(全1件) [ツッコミを入れる]
Magda (2012-01-13 [金] 19:11)

Great arcltie, thank you again for writing.


Copyright © 2004-2008 SewiG All rights reserved.