Как теглет может узнать о классе, в котором он находится?
Насколько я вижу, у taglet api есть ровно один класс: Taglet
, если вы измените Taglet.html
в package-summary.html
в этом нет ничего другого (и есть это слегка пугающее сообщение:
Начиная с версии 1.5 JDK, заменено
com.sun.tools.doclets.internal.toolkit.util.
который я предполагаю, что не влияет на Taglet
сам интерфейс.)
В интерфейсе нет ничего, что могло бы знать что-либо о классе, в котором находится тег, - ничего о его контексте.
Есть ли способ получить имя класса, из которого "вызывается" тэглет? Класс с блоком JavaDoc, в котором {@.myTaglet}
существует?
Как хакер, я думаю заставить пользователя установить его {@.thisClass my.package.AClass}
вверху, перед использованием любого из моих пользовательских тэглетов.
Лучшие идеи были бы великолепны.
(Вот краткий обзор Sun.)
(Также обратите внимание на мой предыдущий вопрос, который является еще одним вопросом о тегах: как сделать встроенные теги (для которых требуется com.sun) более кросс-платформенными? Существует ли не-Oracle/ более кросс-платформенный анализатор javadoc?)
1 ответ
As I was researching this question, I figured it out. This is a function in the demo UnderlineTaglet
:
public String toString(Tag tag) {
return "<u>" + tag.text() + "[" + tag + ", [" +
tag.holder() + "]]</u>";
}
If this taglet is in com.github.xbn.insertexample.BasicOutputProcessors
{@underline xxx}
Это приводит к
<u>xxxy[@underline:xxxy, [com.github.xbn.insertexample.BasicOutputProcessors]]</u>
Так tag.holder().toString()
это ответ.
API: