問題を説明する適切な要約が見つかりません (提案を歓迎します)
次の2つのクラスがあります。
テスト1
import java.lang.reflect.Method;
abstract class Test1 {
boolean condition = true;
public void f() {
System.out.println("Test1 : f");
}
public void g() {
System.out.println("Test1 : g");
f();
if (condition) {
f(); // call Test1.f() here. HOW?
// Following didn't work
try {
Method m = Test1.class.getDeclaredMethod("f");
m.invoke(this);
} catch (Exception e) {
System.err.println(e);
}
}
}
}
テスト2
class Test2 extends Test1 {
public void f() {
System.out.println("Test2 : f ");
}
public static void main(String[] args) {
Test2 t2 = new Test2();
t2.g();
}
}
出力は次のとおりです。
Test1 : g
Test2 : f
Test2 : f
Test2 : f
condition
問題は、フィールド inによって与えられた特別な条件により、のオブジェクトを使用して呼び出しているにもかかわらず、 inTest1
を呼び出したいことです。Test1
f()
g()
Test2
リフレクションを試しましたが、うまくいきません。助言がありますか?
EDIT 1: 具体的には言及しませんでしたが、よく見ると Test1 は抽象的です。そのため、そのオブジェクトを作成できません。