【发布时间】:2016-07-26 10:16:41
【问题描述】:
我需要重写一个隐藏类(用@hide 标记)的方法,该方法只在其包中可见。有什么办法可以扩展吗?
更具体地说,我需要覆盖 android.widget.Editor 的 getNextCursorOffset(),因为该方法不适用于 ReplacementSpan。
【问题讨论】:
-
为什么不用自己的装饰器和Editor的所有方法,只用自己的getNextCursorOffset?
-
@SMA 你的意思是克隆Editor.java?这太疯狂了,因为它有 5K+ 行代码。
-
不克隆。您将在新类中编写编辑器,并将其他方法的调用委托给编辑器实例,而对于 getNextCursorOffset,您将实现自己的逻辑。
-
@SMA,如果 getNextCursorOffset() 受包保护,这将不起作用,它对不同包中的代码不可见。如果该方法受到保护,将会奏效。
-
@SMA 我明白了。但这也不容易。这不是直接调用,整个逻辑很复杂。许多私有成员需要修改,它们本身也无法访问。