0
我有一個場景,我想根據某個條件從一個類重寫基類的構造函數創建與子類。使用反射覆蓋超類構造函數與基類構造函數
所以下面是類: 1)參考 2)其他(基類) 3)OtherImpl(兒童類其他的) 4)RefWorking(主類)
類參考正在呼叫的構造其他類,我想用OtherImpl的構造函數重載此構造函數。
class Ref {
private String s = "Original";
private Other o;
public Ref() {
}
public void method1(int a) {
o = new Other();
System.out.println("Method 1 : "+ s);
}
private void method2(String a) {
System.out.println("Method 2 : "+ a);
}
}
class Other {
public Other() {
System.out.println("Default Other Constructor");
}
}
class OtherImpl extends Other {
public OtherImpl() {
System.out.println("Reflection Constructor");
}
}
public class RefWorking {
public static void main(String args[]) throws NoSuchMethodException, SecurityException, IllegalAccessException, IllegalArgumentException, InvocationTargetException, NoSuchFieldException {
Ref r = new Ref();
Class c = r.getClass();
OtherImpl oi = new OtherImpl();
Field f = c.getDeclaredField("o");
f.setAccessible(true);
f.set(r, oi);
r.method1(10);
}
}
這是給下面的輸出:
默認其他構造 反射構造 默認其他構造 方法1:原始
但我的預期成果是: 默認其他構造 反射構造 默認其他構造函數 反射構造函數 方法1:原始