![]() |
1
2
从你所描述的来看,你真正的问题是你有一个你不想/不能修改的由另一个lib创建的类的实例,你真正想要的是向这些对象添加新方法(并最终重写一些方法),但是不能,因为你可以告诉这个lib使用你自己的类。 如果这一点纯粹是用您自己的版本“替换”原始类(因此原始类的所有实例都会受到更改的影响),那么规范的解决方案是 monkeypatch the original class 以下内容:
只要确保在使用修补类之前执行此操作,就可以完成。 这个解决方案的pro(wrt/单独修补每个实例)成本更低,并保证不会有人忘记修补实例。 现在请注意,monkeypatches将被视为一种临时解决方案或最后手段。如果您要修补的库是oss,您可以对其进行修改,以改进原始类,或者实现某种方法,使具体的类使用可配置的,并将其贡献回来。 |
![]() |
2
0
我认为最好的方法是定义一个函数来扩展原始的
|
![]() |
Brendan · Java中从父类继承的对象的ArrayList 2 年前 |
![]() |
Tali · 继承-您应该使用基类,还是它们只是子类的框架? 2 年前 |
![]() |
mask2 · 如何轻松访问继承类的功能? 2 年前 |
![]() |
Dimon · 父类中的Setter,以及一些没有参数的子类 2 年前 |
![]() |
Miguerurso · Javascript类继承无法正常工作 2 年前 |
![]() |
GuessMe · 返回新类对象的正确方法(也可以扩展) 2 年前 |
![]() |
Daniel Lizik · 重写父类构造函数的子类成员初始值设定项 2 年前 |
![]() |
i_know_what · 以基类作为参数重写错误的方法 2 年前 |