【发布时间】:2012-04-19 10:39:44
【问题描述】:
我想知道是否有办法以“简单的方式”做到这一点,也许有人知道解决方案:
我正在使用 javax.swing.text.html.HTMLDocument 类,但由于某种原因,我需要的至少 2 个方法是非公开的,即便如此,我需要“覆盖”它们,以更改几件事,但是,在某种程度上,我需要保留 HTMLDocument 类,因为我使用了很多包 javax.swing.text.html...
所以,我首先要做的是创建一些 MyHTMLDocument 扩展 HTMLDocument,并尝试覆盖一些方法...当失败时,我尝试使用对某些方法的反射来解决它,但不起作用..所以,正在绝望,我将所有 HTMLDocument 代码“复制 - 粘贴”为 MyHTMLDocument,(扩展 HTMLDocument),更改我需要的内容并将其放在我自己的“javax.swing.text.html”包中,现在它似乎可以工作,但是……
...当我最终运行它时,我遇到了一些“非法访问错误”,例如当我调用 TagActions 时...我感到很沮丧...
拜托,如果有人可以帮助我,我真的很感激。
更新:
好吧,让我澄清一下:
在 javax.swing.text.html.HTMLDocument 类上,可以找到三个方法:
公共 getReader(int pos)
public getReader(int pos, int pos, int popDepth, int pushDepth, HTML.Tag insertTag)
getReader(int pos, int pos, int popDepth, int pushDepth, HTML.Tag insertTag, boolean insertInsertTag)
最后一个,是非公开的或受保护的。
此外,还有一个名为 HTMLReader 的内部类,它有 3 个构造函数:
公共 HTMLReader(int offset)
public HTMLReader(int offset, int popDepth, int pushDepth, HTML.Tag insertTag)
HTMLReader(int offset, int popDepth, int pushDepth, HTML.Tag insertTag, boolean insertInsertTag, boolean insertAfterImplied, boolean wantTrailingNewline)
同样,最后一个是非公开的。
我需要做的是从我的自定义类中至少调用这两个非公开的: 公共类 MyHTMLDocument 扩展 HTMLDocument{
} 但我只是不知道该怎么做..我什至尝试了一些反射,它似乎适用于方法,但我找不到对构造函数做同样的方法...... 再次感谢。
【问题讨论】:
-
请用代码显示你想要做什么。出于某种原因,这些方法是非公开的,并且可能还有其他方法可以完成您正在尝试做的事情。用完全抽象的术语讨论这个是没有用的。
-
我不太确定总有一个原因......我真的认为至少这两个应该受到保护......但是,正如你所说,讨论这个是没有用的。我已经修改了我原来的帖子来解释我在做什么。感谢回复
标签: java dom illegalaccessexception