我找不到一个好的总结来描述我的问题(欢迎提出建议)
我有以下两个课程:
测试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
字段给出的一些特殊条件,即使Test1
我使用.Test1
f()
g()
Test2
我尝试了反射,但它也不起作用。有什么建议么?
编辑1: 我没有具体提到它,但如果你仔细看,Test1 是抽象的。所以我无法创建它的对象。