java 获取代码注释

1.今天来介绍工具获取java代码的注释,以此来编写自动生成文档工具。

代码:
先导入jdk的tools.jar包

public class Doclet {

    public static class Entry {
        /**参数名*/
        public String fName;
        /**类型*/
        public String fType;
        /**说明*/
        public String fExplain;

        public Entry(String fName, String fType, String fExplain) {
            super();
            this.fName = fName;
            this.fType = fType;
            this.fExplain = fExplain;
        }
    }

    private static RootDoc rootDoc;
    private String javaBeanFilePath;

    public Doclet(String javaBeanFilePath) {
        this.javaBeanFilePath = javaBeanFilePath;
    }

    public List<Entry> exec() {
        com.sun.tools.javadoc.Main.execute(new String[] { "-doclet", Doclet.class.getName(), "-docletpath",
                Doclet.class.getResource("/").getPath(), "-encoding", "utf-8", javaBeanFilePath });
        ClassDoc[] classes = rootDoc.classes();

        List<Entry> entrys = Lists.newArrayList();
        for (ClassDoc classDoc : classes) {
            FieldDoc[] fields = classDoc.fields(false);
            for (FieldDoc field : fields) {
                entrys.add(new Entry(field.name(), Type.type(field.type().typeName()), field.commentText()));
            }
            // 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');
            // }
        }
        return entrys;
    }

    public static boolean start(RootDoc root) {
        rootDoc = root;
        return true;
    }

    public static void main(String[] args) {
        Doclet doclet = new Doclet(
                "D:\\dev\\java_workspace\\git_pro\\yunji-groupbuy\\yunji-groupbuyapi\\src\\main\\java\\com\\yunji\\groupbuy\\bean\\response\\GroupbuyDetailVo.java");
        doclet.exec();
    }
}

上面会将指定的java源文件中的类的成员变量名称,类型,注释返回。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
好的,以下是我给出的 Java 代码注释: ```java /** * 从字符串获取指定 key 对应的数据 * @param buf 待解析的字符串 * @param key 要获取的数据的 key * @param data 解析后得到的数据 * @param split1 第一层分隔符 * @param split2 第二层分隔符 * @return 如果提取成功,返回 0;否则返回 1 */ public static int nGetAddData( String buf, String key, String data, char split1, char split2) { // 初始化变量 String pkey = null; String pdata = null; String psplit = null; char[] splitTmp = new char[2]; Arrays.fill(splitTmp, '\0'); splitTmp[0] = split2; // 在 buf 查找 key 的位置 pkey = buf.contains(key) ? buf.substring(buf.indexOf(key)) : null; if (pkey != null) { // 在 key 后面查找第一个分隔符 split1 pdata = pkey.contains(String.valueOf(split1)) ? pkey.substring(pkey.indexOf(split1) + 1) : null; if (pdata != null) { // 在 pdata 后面查找第二个分隔符 split2 psplit = pdata.contains(String.valueOf(split2)) ? pdata.substring(pdata.indexOf(split2)) : null; if (psplit == null) { // 如果查找失败,输出错误信息 System.out.printf("附加数据格式不符,%s,%s\n", key, buf); return 1; } else { // 如果查找成功,将数据保存到 data data = pdata.substring(0, Math.abs(pdata.indexOf(split1) - psplit.length())); System.out.printf("key=%s,data=%s\n", key, data); return 0; } } } // 如果查找失败,返回错误码 System.out.printf("附加数据格式不符,%s,%s\n", key, buf); return 1; } ``` 需要注意的是,Java 的字符串是不可变的,因此不能直接修改 `data` 的值,而需要将结果保存到一个新的字符串。另外,Java 没有 C 语言的指针,因此需要使用字符串的 `substring` 方法来截取子串。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值