1

我正在编写一个工具来从预先存在的 Java 源文件中抓取 Javadoc,并通过自定义 doclet 对其进行预处理(处理的细节不相关)。我已经编写了 doclet,并且可以通过 Java文档中所示的编程 API 从我的代码中调用 doclet 。

这种机制似乎是“只写”的,因为运行 doclet 的结果(如果有的话)不能通过第一类 Java 对象传回 execute() 方法的调用者。相反,我不得不求助于诸如从 doclet 中将中间输出写入文件,然后从调用者那里读回该文件。

所以我的问题是:有什么方法可以直接在调用者处检索由我的自定义 doclet 生成的字符串?例如:

public void foo() {
    // Invoke my custom doclet via Javadoc programmatically
    com.sun.tools.javadoc.Main.execute(new String[] {"-d", "docs", "- sourcepath", "/home/usr/src", "p1", "p2"});

    // Access the String output of my doclet here
    String processedJavadoc = getTheOutputOfMyDoclet();
}

提前致谢!

4

1 回答 1

0

好的,所以我能想到的最优雅的方法是让 doclet 类使用一个静态成员变量,该变量设置为RootDocJavadoc 工具在调用 doclet 的start()方法时传入的实例,然后允许访问通过 getter 调用此静态成员。这带来了使用静态成员的明显线程安全问题,但对于我的目的来说它工作正常。

于 2012-04-04T18:53:06.030 回答