java从父类继承时,如何更改父类构造函数的一部分?
我有一门课,我想把它变成一个物体。然而,这个类的构造函数中有一个属性集,这使得它对我来说不可用。我不能编辑这个类的代码,因为它存在于一个非常紧凑的代码库中。这个属性在对象构造后不能更改,所以即使有setter方法,它也不能工作(它是SWT gui框架的一部分,不能动态更改)
我的直觉告诉我要把它分类,并改变我需要改变的东西。应该只写几行,因为这门课的其他方面都会保持不变。然而,由于需要在子类的构造函数中调用的第一行是super方法,这意味着在我做任何事情之前就调用了父类的构造函数
有没有什么方法可以在这个类中创建一个对象,只更改一个小属性,而不必创建一个完整的新类,它是所有代码的复制/粘贴,除了8中的一个小更改
谢谢
编辑:因为有人请求代码:
public class Parent {
private Object important_object = null;
public Parent() {
important_object = new Object();
important_object.important_property = BAD;
}
}
public class Child extends Parent {
public Child() {
// how the heck do I make an instance of this
// class that has important_property set to GOOD
// instead of BAD?
}
}
# 1 楼答案
有一种叫做classworking的东西,它允许你在运行时修改Java字节码,但这绝对不是一件小事,而且这可能太过分了。虽然这是一本很有趣的书
http://www.ibm.com/developerworks/library/j-cwt02076/
https://commons.apache.org/proper/commons-bcel/