JavaParse入门

时间:2025-03-22 19:55:56
package cn.com.infosec.netseal.appserver.util; import cn.com.infosec.netseal.common.util.StringUtils; import com.alibaba.fastjson.JSON; import com.github.javaparser.JavaParser; import com.github.javaparser.ast.CompilationUnit; import com.github.javaparser.ast.Node; import com.github.javaparser.ast.NodeList; import com.github.javaparser.ast.body.ClassOrInterfaceDeclaration; import com.github.javaparser.ast.body.FieldDeclaration; import com.github.javaparser.ast.body.TypeDeclaration; import com.github.javaparser.ast.body.VariableDeclarator; import com.github.javaparser.ast.comments.Comment; import com.github.javaparser.ast.expr.SimpleName; import java.io.File; import java.util.List; import java.util.Optional; public class JavaParseTest { public static void main(String[] args) throws Exception { String classPath = "E:\\Idea\\NetSeal\\v7\\src\\netseal\\netseal-common\\src\\main\\java\\cn\\com\\infosec\\netseal\\common\\resource\\errCode\\"; String mapName = "subTypeMap"; CompilationUnit parse = JavaParser.parse(new File(classPath)); Optional<ClassOrInterfaceDeclaration> errSubType = parse.getClassByName("ErrSubType"); errSubType.ifPresent((c) -> { // 获取类名/类注释 String className = c.getName().toString(); c.getComment(); // 获取类里的变量、方法等子节点 List<Node> list = c.getChildNodes(); System.out.println("总个数:" + list.size()); for (Node nodeTmp : list) { if (!(nodeTmp instanceof FieldDeclaration)) continue; FieldDeclaration node = (FieldDeclaration) nodeTmp; // 获取变量的类型、变量名称和变量值; VariableDeclarator variable = node.getVariable(0); String varName = variable.getNameAsString(); String varType = variable.getTypeAsString(); // 获取变量注释 String content = ""; Optional<Comment> comment = node.getComment(); if (comment != null && comment.get().getContent() != "") { content = comment.get().getContent().replace("*", "").trim(); } System.out.println(StringUtils.format("{}.put({}.{}, \"{}\");", mapName, className, varName, content)); } }); } }