从父 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_object
或important_property
的setter并且你不能使用Reflection那么就没有办法更改属性。
有一种叫做 classworking 的东西,它允许您在运行时修改 Java 字节码,但这绝对是非常重要的,而且它可能对这个来说太多了。虽然这是一本非常有趣的书。
我有一些 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_object
或important_property
的setter并且你不能使用Reflection那么就没有办法更改属性。
有一种叫做 classworking 的东西,它允许您在运行时修改 Java 字节码,但这绝对是非常重要的,而且它可能对这个来说太多了。虽然这是一本非常有趣的书。