一个开源库有一个我正在扩展的抽象Java类,叫做AbstractDialog
。它有一个私有内部类A
和一个私有成员A a
,它在构造函数中实例化。不幸的是,我需要自定义A
中实现的行为。
我应该使用反射将a
成员变量设置为我自己的实现吗?或者将AbstractDialog
的源代码复制到我的项目中并使A
和a
受到保护?
<子>
一般答案是最好的,但在我的具体情况下,我想覆盖我正在开发的Eclipse插件的抽象类ContentProvider
中FilteredItemsSelectionDialog
的行为。
子>
答案 0 :(得分:4)
如果A
是私有的,那么它不是用于外部使用的,因此可能无法保证以相同的方式工作,甚至不会在将来存在。所以反思黑客已经出局了。复制它,并控制实现。如果它发散,那很好。如果你控制了框架,我会重构使A通常可用,但既然你没有,你就没有多少选择。