从父 class 继承时如何更改其构造函数的一部分?

How do I change part of a parent class's constructor when inheriting from it?

我有一些 class,我想用它做一个物体。但是,此 class 在其构造函数中设置了 属性,这使我无法使用它。我无法编辑此 class 的代码,因为它存在于非常紧凑的代码库中。这个 属性 在构造对象后不能改变,所以即使有一个 setter 方法,它也不起作用(它是 SWT gui 框架的一部分,不能动态改变) .

我的直觉告诉我将其子class 并更改我需要更改的内容。应该只需要几行,因为此 class 的每个其他方面都将保持不变。但是,由于您需要在子 class 的构造函数中调用的第一行是 super 方法,这意味着在我做任何事情之前调用父 class 的构造函数。

有什么方法可以让我用这个 class 制作一个对象,只改变一个小的 属性,而不必创建一个全新的 class,即 [=22] =] 它的所有代码,除了像 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?
    }
}

如果属性是private,没有提供important_objectimportant_property的setter并且你不能使用Reflection那么就没有办法更改属性。

有一种叫做 classworking 的东西,它允许您在运行时修改 Java 字节码,但这绝对是非常重要的,而且它可能对这个来说太多了。虽然这是一本非常有趣的书。

http://www.ibm.com/developerworks/library/j-cwt02076/

https://commons.apache.org/proper/commons-bcel/