Java 如何注册具有配置差异的自定义Doclet的多个实例

Java 如何注册具有配置差异的自定义Doclet的多个实例,java,javadoc,taglet,Java,Javadoc,Taglet,我正在编写一个定制的Javadoc doclet来打印包含类的javax.validation约束表。它基本上是可行的,但我发现Doclet框架限制性很强,缺乏灵活性 在后台,类中的属性很可能有多个验证约束。当我最初编写Taglet时,我在表中为每个约束呈现单独的行,即使属性名称相同 有人评论说,他们希望能够在同一行上呈现单个属性的所有约束,以逗号分隔。我个人认为我不想这样,但我认为没有理由限制,因为这是一个合理的要求 所以,我想,在Taglet上允许配置选项有多难?我发现这很难 首先,我假设可

我正在编写一个定制的Javadoc doclet来打印包含类的javax.validation约束表。它基本上是可行的,但我发现Doclet框架限制性很强,缺乏灵活性

在后台,类中的属性很可能有多个验证约束。当我最初编写Taglet时,我在表中为每个约束呈现单独的行,即使属性名称相同

有人评论说,他们希望能够在同一行上呈现单个属性的所有约束,以逗号分隔。我个人认为我不想这样,但我认为没有理由限制,因为这是一个合理的要求

所以,我想,在Taglet上允许配置选项有多难?我发现这很难

首先,我假设可以定义采用配置选项的taglet。然后我发现没有办法做到这一点

好吧,然后我想我会耍点小把戏

下面是我的taglet类中的一段代码:

public static void register(Map<String, Taglet> tagletMap)  {
    ValidationConstraintsTaglet taglet  = new ValidationConstraintsTaglet();
    registerInstance(tagletMap, taglet, taglet.getName());
    //ValidationConstraintsTaglet tagletCombined  = new ValidationConstraintsTaglet().combineConstraints(true);
    //registerInstance(tagletMap, tagletCombined, taglet.getName() + "Combined");
}

private static void registerInstance(Map<String, Taglet> tagletMap, Taglet taglet, String name) {
    if (tagletMap.get(name) != null) {
        tagletMap.remove(name);
    }
    tagletMap.put(name, taglet);
}
这就是我得到的所有信息。没有任何线索告诉我这是在哪里发生的


当我第一次看到这一点时,我认为我一定同时也改变了一些其他的东西,导致了这一点。然后我注释掉了这两行新代码并重新测试,错误消失了。

我放弃了这种方法,因为我无法让它工作,也没有得到任何回应

我必须做的是在子类中实现配置更改,使用它自己的“register”方法和不同的标记名

javadoc: error - com.sun.tools.doclets.internal.toolkit.util.DocletAbortException: java.lang.ClassCastException: com.att.det.taglet.ValidationConstraintsTaglet cannot be cast to com.sun.tools.doclets.internal.toolkit.taglets.Taglet