next up previous
Next: 9 パッケージ Up: 8 要素型と参照型 Previous: 8.5 アップキャスト

8.6 ダウンキャスト

下方へキャストする場合には注意が必要で, xの初期化でアップキャストがおこり,u()の呼び出しにおいて ダウンキャストが起こりますが,もともと親データでしかなかった ものはダウンキャストで例外がおきている.

//: RTTI.java
// Copyright (c) Bruce Eckel, 1998
import java.util.*;

class Useful {
  public void f() {}
  public void g() {}
}

class MoreUseful extends Useful {
  public void f() {}
  public void g() {}
  public void u() {}
  public void v() {}
  public void w() {}
}

public class RTTI {
  public static void main(String[] args) {
    Useful[] x = {
      new Useful(),
      new MoreUseful()
    };
    x[0].f();
    x[1].g();
    // Compile-time: method not found in Useful:
    //! x[1].u();
    ((MoreUseful)x[1]).u(); // Downcast/RTTI
    ((MoreUseful)x[0]).u(); // Exception thrown
  }
}


generated through LaTeX2HTML. M.Inaba 平成18年5月7日