javadoc和Doclet使用的一些事情

最近项目有要求,需要我把方法上面的文档注释导出,给测试那边阅读。
首先说说Java里面的注释,一共有三种。

1.//单行注释
2./* */区块注释,可以有多行
3./**
*/文档注释

ps:上面那个不换行,不能正确显示。

本文重点就在第三种:文档注释。说到文档注释,我们很自然的就想到了javadoc,这个官方提供的工具是相当好用,直接在命令行运行就可以生成html文件。当然默认生成的文档是html格式,就和官网给的源代码阅读网页差不多的,如果你有闲心,你可以自己生成比较看看的,没有惊喜和彩蛋。

显然默认生成的这个不符合项目要求的,需要手动修改的。好在sun公司给我们提供了一个API–Doclet,通过继承这个类,我们可以定制任意自己想要的输出。

直接上代码

public class ExampleDoclet extends Doclet {

  public static boolean start(RootDoc root) {
    ClassDoc[] classes = root.classes();
    //解析classes 
    return true;
  }
}

看着是不是很熟悉?好像在哪里见到过一样的,没错就是反射。看起来就像反射,具体怎么实现,有兴趣的可以自己去研究一下,我在这里讲思路。具体ClassDoc这个怎么解析,可以自己查阅相关API。

重点来了,怎么调用?

 public static void main(String[] args) throws Exception {
     String[] docArgs =
         new String[] {
           "-doclet", ExampleDoclet.class.getName(), "这个参数是你需要解析的.java文件的绝对路径","如果你需要一次解析两个.java文件,可以继续在这后面添加绝对路径"
         };
     com.sun.tools.javadoc.Main.execute(docArgs);
  }

“-doclet”这是一个参数申明,ExampleDoclet.class.getName()代表你使用的那个Doclet类来解析你.java文件。

是不是有疑问为什么这里会调用execute这个方法?如果你有兴趣去看com.sun.tools.javadoc.Main源码,你就会发现一个神奇的事情。

源码图片
是不是一点惊喜都没有,main()里面就执行了execute()方法。

似乎貌似好像已经讲完了,代码也说了,思路也实现了。

end

其实你在第一步的时候你就发现了一个问题,编译器会提示你找不到Doclet这个类。这是一个很简单的问题,你需要从jdk的lib下面找到tools.jar这个包,直接复到你的项目里面作为资源包,顺便附上一个懒人专用链接。tools.jar下载

附上我的代码,就一个java文件的,下载过后自己修改一下main()里面自己java文件对应的路径。案例下载

如果有疑问,欢迎提出!

  • 4
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值