[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[jfriends-ml 12055] ブリッジメソッドと Reflection



  高橋(智)です。

  今度も JDK1.5.0_05 で以下のクラスC,Dをコンパイルしてみました。
--------------------------------
public class C {
  public C() {
  }

  public C dup() {
    return new C();
  }
}

public class D extends C {
  public D() {
  }

  public D dup(){
    return new D();
  }
}
--------------------------------

  で、次のコードを実行してみました。
-----------------------------------------------------------------
import java.lang.reflect.*;

public class Test {
  public static void main(String[] argv) throws Exception {

    Method m = D.class.getMethod("dup", new Class[0]);
    System.out.println("ReturnType(dup) = " + m.getReturnType().getName());

    Method[] ma = D.class.getMethods();
    for(int i = 0; i < ma.length; i++)
    {
      if( ma[i].getName().equals("dup") )
      {
        System.out.println("ReturnType[i] = " + ma[i].getReturnType().getName());
      }
    }
  }
}
-----------------------------------------------------------------

  結果は、以下の通りです。getMethods() と 戻り値の型 とを見れば、
public C dup() のほうを明示的に呼び出せると思います。
-----------------------------------------------------------------
$>java Test
ReturnType(dup) = D
ReturnType[i] = D
ReturnType[i] = C
-----------------------------------------------------------------

-- 
高橋智宏
  Java読書会( http://www.javareading.com/bof/ )