美文网首页
[JAVA] 读取Java源文件中的注释

[JAVA] 读取Java源文件中的注释

作者: ddwqas | 来源:发表于2019-09-28 22:52 被阅读0次

因“注释信息”只存在.java文件中,而不在.class文件中,故只有通过解析*.java文件来获取:
1.通过正则表达式
2.通过词法分析语法分析
3.通过javadoc或其它(JDTJavaParserRoaster等)包含词法分析、语法分析的工具,IDE、代码格式化等这类工具一般都包含有

下面是通过javadoc的Doclet实现的
实际测试环境为:java 8

注意:需要在工程中加载jdk中的包$JAVA_HOME/lib/tools.jar

package uuo.tools;

import java.util.ArrayList;

import com.sun.javadoc.ClassDoc;
import com.sun.javadoc.FieldDoc;
import com.sun.javadoc.MethodDoc;
import com.sun.javadoc.RootDoc;

/**
 * 类说明:打印类及其字段、方法的注释<br>
 * 使用javadoc实现<br>
 * 需要在工程中加载jdk中的包$JAVA_HOME/lib/tools.jar
 */
public class Doclet
{

    /**
     * 测试
     */
    public static void main(String[] args)
    {
        //java源文件的路径
        ArrayList<String> sources=new ArrayList<>();
        sources.add("../uuo/example/Example1.java");
        sources.add("../uuo/example/Example2.java");
        //打印
        println(sources);
    }

    /**
     * 打印类及其字段、方法的注释
     * 
     * @param sources java源文件路径
     */
    public static void println(ArrayList<String> sources)
    {
        ArrayList<String> list=new ArrayList<>();
        list.add("-doclet");
        list.add(Doclet.class.getName());
        list.addAll(sources);
        com.sun.tools.javadoc.Main.execute(list.toArray(new String[list.size()]));

        StringBuilder buffer=new StringBuilder();
        ClassDoc[] classes=Doclet.root.classes();
        for(ClassDoc classDoc:classes)
        {
            buffer.append(classDoc.name()).append('\n');
            buffer.append('\t').append(classDoc.commentText()).append('\n');
            buffer.append('\t').append("字段").append('\n');
            FieldDoc[] fields=classDoc.fields();
            for(FieldDoc field:fields)
            {
                buffer.append('\t').append('\t').append(field.name()).append('\n');
                buffer.append('\t').append('\t').append('\t').append(field.commentText()).append('\n');
            }
            buffer.append('\t').append("方法").append('\n');
            MethodDoc[] methods=classDoc.methods();
            for(MethodDoc method:methods)
            {
                buffer.append('\t').append('\t').append(method.name()).append('\n');
                buffer.append('\t').append('\t').append('\t').append(method.commentText()).append('\n');
            }
        }
        System.out.println(buffer);
    }

    /** 文档根节点 */
    private static RootDoc root;

    /**
     * javadoc调用入口
     * 
     * @param root
     * @return
     */
    public static boolean start(RootDoc root)
    {
        Doclet.root=root;
        return true;
    }
}

相关文章

  • [JAVA] 读取Java源文件中的注释

    因“注释信息”只存在.java文件中,而不在.class文件中,故只有通过解析*.java文件来获取:1.通过正则...

  • Java中的注释、关键字、标识符

    Java中的注释 1. 单行注释 // 2. 多行注释 /* */ 3. 文档注释 /** */ Java中的关键...

  • javaSE回顾_02

    Java中的注释 Java中的注释有三种: 1. 单行注释——//注释内容 2. 多行注释——/* ...

  • java入门

    java运行过程 java源文件(.java文件)------【通过及擦命令编译源文件】------java字节码...

  • Android应用包的生成/管理/访问

    APK编译 APK项目的源文件包括: 资源文件 aidl源文件 Java源文件 Java静态库 Java共享库 所...

  • KotlinPoet

    简介 KotlinPoet是一个用于生成.kt源文件的Kotlin和Java的 API。源文件生成在进行诸如注释处...

  • Java中读取资源文件小结

    无论是Servlet或者Spring、MyBatis,配置资源文件都是必不可少的一项工作,Java中主要提供了提供...

  • 11. ServletContext应用

    获取初始化参数 转发和重定向 读取资源文件 popertiesclasspath: java和resource路径...

  • Java读取资源文件

    写java代码时常常需要加载一些外部的资源,通常我们会使用全路径名加载一份资源,比如:C:\Users\Yukai...

  • Java源码自动生成技术

    本文为译文:由Square出品的 javapoet java诗人,用于生成Java源文件的Java API,源文件...

网友评论

      本文标题:[JAVA] 读取Java源文件中的注释

      本文链接:https://www.haomeiwen.com/subject/cwtxpctx.html