扩展私有内部 classes:使用反射 hack 还是 copy/paste 基础 class 更好?
Extending private inner classes: Is it better to use reflection hacks or copy/paste the base class?
一个开源库有一个抽象 Java class 我正在扩展名为 AbstractDialog
。它有一个私有内部 class A
和一个在构造函数中实例化的私有成员 A a
。不幸的是,我需要自定义 A
.
中实现的行为
我是否应该使用反射将 a
成员变量设置为我自己的实现?或者将 AbstractDialog
的源代码复制到我的项目中并使 A
和 a
受保护?
一般的答案是最好的,但在我的具体情况下,我想为我正在开发的 Eclipse 插件覆盖 ContentProvider
in the abstract class FilteredItemsSelectionDialog
的行为。
如果 A
是私有的,则它不打算供外部使用,因此可能无法保证以相同的方式工作,甚至无法保证将来存在。所以反射黑客已经出局了。复制它,并控制实施。如果它有分歧,很好。如果您控制了框架,我会重构以使 A 普遍可用,但由于您不控制,您没有太多选择。
一个开源库有一个抽象 Java class 我正在扩展名为 AbstractDialog
。它有一个私有内部 class A
和一个在构造函数中实例化的私有成员 A a
。不幸的是,我需要自定义 A
.
我是否应该使用反射将 a
成员变量设置为我自己的实现?或者将 AbstractDialog
的源代码复制到我的项目中并使 A
和 a
受保护?
一般的答案是最好的,但在我的具体情况下,我想为我正在开发的 Eclipse 插件覆盖 ContentProvider
in the abstract class FilteredItemsSelectionDialog
的行为。
如果 A
是私有的,则它不打算供外部使用,因此可能无法保证以相同的方式工作,甚至无法保证将来存在。所以反射黑客已经出局了。复制它,并控制实施。如果它有分歧,很好。如果您控制了框架,我会重构以使 A 普遍可用,但由于您不控制,您没有太多选择。