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