Tag: monkeypatching

是否有可能在Java中进行猴子修补,如果没有替代方案?

这是8年前在这里被问到的,从那时起已经过去了8年。 我想再次问这个问题,看看是否有人开发了一个猴子修补的框架,工具或库。 基本上我需要它是一个java应用程序,我应用自己的补丁。 由于这个项目由另一个团队维护,我希望能够保留/应用我制作的任何补丁,以及他们制作的补丁。

是否有可能在Java中修补补丁?

我不想讨论这种方法的优点,只要有可能。 我相信答案是“不”。 但也许有人会让我感到惊讶! 想象一下,你有一个核心小部件类。 它有一个方法calculateHeight() ,它返回一个高度。 高度太大 – 这导致按钮(比如说)太大了。 您可以扩展DefaultWidget来创建自己的NiceWidget,并实现自己的calculateHeight()以返回更好的大小。 现在,一个库类WindowDisplayFactory,在一个相当复杂的方法中实例化DefaultWidget。 您希望它使用您的NiceWidget。 工厂类的方法看起来像这样: public IWidget createView(Component parent) { DefaultWidget widget = new DefaultWidget(CONSTS.BLUE, CONSTS.SIZE_STUPIDLY); // bunch of ifs … SomeOtherWidget bla = new SomeOtherWidget(widget); SomeResultWidget result = new SomeResultWidget(parent); SomeListener listener = new SomeListener(parent, widget, flags); // more widget creation and voodoo here return result; […]