Как теглет может узнать о классе, в котором он находится?

Насколько я вижу, у 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:

Другие вопросы по тегам