恒等変換と拡張参照変換の言葉の意味

Class の次のメソッドの API ドキュメントで使われていた用語の意味についてメモ。

public boolean isAssignableFrom(Class<?> cls)

因みにこのメソッドは現在のクラスが指定されたクラス cls のスーパータイプならば true を返す。
http://java.sun.com/javase/ja/6/docs/ja/api/java/lang/Class.html#isAssignableFrom(java.lang.Class)

恒等変換 (Identity Conversions)

同一の型へ変換すること。これは当たり前のようだけど次の2つの実用的な意味を持つ。

  1. 全ての式を変換の対象とすることができ規則を簡潔に出来る
  2. 明示的なキャスト演算子を記述できるようになる

拡張参照変換 (Widening Reference Conversions)

これはサブタイプからスーパータイプの方向への次のような変換のこと。

  1. S が T のサブクラスの場合、クラス型 S からクラス型 T への変換
  2. S が K を実装する場合、クラス型 S からインタフェース型 K への変換
  3. J が K のサブインタフェースの場合、インタフェース型 J からインタフェース型 K への変換

いわゆるダウンキャストとは逆。Java言語仕様 第3版の訳本では「参照型のワイドニング変換」と呼ばれている。逆は「参照型のナローイング変換」

参考

http://java.sun.com/j2se/1.5.0/ja/docs/ja/guide/reflection/spec/java-reflection.doc.html
http://java.sun.com/docs/books/jls/third_edition/html/conversions.html#5.1.1
http://java.sun.com/docs/books/jls/third_edition/html/conversions.html#5.1.5

Java言語仕様 第3版 (The Java Series)

Java言語仕様 第3版 (The Java Series)