次の3つのクラスがあるとします
A.java
public class A {
public static void main (String[] args) {
new C();
}
}
B.java
import java.lang.reflect.Method;
import java.util.Arrays;
public class B {
public B() {
Method[] m = this.getClass().getDeclaredMethods();
System.out.println(Arrays.toString(m));
}
public void hello() {
}
}
C.java
public class C extends B{
public C() {
super();
}
}
そして、クラス A でメイン メソッドを実行します。クラス C をインスタンス化する必要があります。クラス C は、クラス B のコンストラクターを呼び出して、宣言されたメソッドを出力します。出力は[]
です。出力が次のようになると予想していたので、これは驚きです (すべてのクラスが というパッケージに含まれていると仮定しますtest
)。
[public void test.B.hello()]
それで、何が問題なのですか?そして、これが実際の出力になるようにするにはどうすればよいですか?