[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/ )