扩展私有内部类:使用反射黑客或复制/粘贴基类是否更好?

时间:2015-07-14 03:43:32

标签: java reflection eclipse-plugin polymorphism

一个开源库有一个我正在扩展的抽象Java类,叫做AbstractDialog。它有一个私有内部类A和一个私有成员A a,它在构造函数中实例化。不幸的是,我需要自定义A中实现的行为。

我应该使用反射将a成员变量设置为我自己的实现吗?或者将AbstractDialog的源代码复制到我的项目中并使Aa受到保护?

<子> 一般答案是最好的,但在我的具体情况下,我想覆盖我正在开发的Eclipse插件的抽象类ContentProviderFilteredItemsSelectionDialog的行为。

1 个答案:

答案 0 :(得分:4)

如果A是私有的,那么它不是用于外部使用的,因此可能无法保证以相同的方式工作,甚至不会在将来存在。所以反思黑客已经出局了。复制它,并控制实现。如果它发散,那很好。如果你控制了框架,我会重构使A通常可用,但既然你没有,你就没有多少选择。