使用 javaparser 解析.java文件

时间:2025-03-22 14:16:31

 maven 依赖

  <dependencies>
        <dependency>
            <groupId></groupId>
            <artifactId>javaparser-symbol-solver-core</artifactId>
            <version>3.6.5</version>
        </dependency>

        <dependency>
            <groupId></groupId>
            <artifactId>javaparser-core</artifactId>
            <version>3.6.5</version>
        </dependency>
    </dependencies>
public List<FieldsData> getFieldsDataList() {
        FileInputStream in = null;
        try {
            in = new FileInputStream(filePath);
            CompilationUnit cu = (in);
            String mainClass = (0).getName().asString();
            NodeList<ImportDeclaration> imports = ();
            if (imports != null) {
                for (int i = 0; i < (); i++) {
                    ((i).getNameAsString());
                }
            }
            //("imports:" + importName);
            for (TypeDeclaration typeDec : ()) {
                List<BodyDeclaration> members = ();
                if (members != null) {
                    for (BodyDeclaration member : members) {
                        parserBodyDeclaration((0).getName().asString(), member);
                    }
                }
            }
        } catch (FileNotFoundException e) {
            ();
        } finally {
            if (in != null) {
                try {
                    ();
                } catch (IOException e) {
                    ();
                }
            }
        }

        return fieldsDataList;
    }
 public void parserBodyDeclaration(String className, BodyDeclaration member) {

        if (member instanceof FieldDeclaration) {
            FieldDeclaration field = (FieldDeclaration) member;

//            NodeList annotations = ();
//            if (annotations != null && () > 0) {
//                ("annotations:" + (0));//注解
//            } else {
//                ("annotations is empty");
//            }

            // ("matamodel:" + ()); //Core10000101In
            // ("comment:" + ().orElse(null)); 注释
            // ("class: " + className + ",name: " + (0).getName().asString() +
            // ",type:" + ().asString());

            String elementType = ().asString();
            for (int i = 0; i < (); i++) {
                if ((i).endsWith(elementType)) {
                    elementType = (i);
                    break;
                }
            }

            (new FieldsData((0).getName().asString(),
                    elementType, className));
        }

        if (member instanceof ClassOrInterfaceDeclaration) {
            ClassOrInterfaceDeclaration field = (ClassOrInterfaceDeclaration) member;
//            NodeList<AnnotationExpr> annotations = ();
//            if (annotations != null && () > 0) {
//                ("class annotaions:" + (0).getName());
//            }
            SimpleName name = ();
            String classNameNew = className + "." + ();
            NodeList<BodyDeclaration<?>> members2 = ();
            if (members2 == null) {
                return;
            }
            for (BodyDeclaration item : members2) {
                parserBodyDeclaration(classNameNew, item);
            }
        }
    }
public class FieldsData {
    private String name;
    private String typeName;
    private String className;

    public FieldsData(String name, String typeName, String className) {
         = name;
         = typeName;
         = className;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
         = name;
    }

    public String getTypeName() {
        return typeName;
    }

    public void setTypeName(String typeName) {
         = typeName;
    }

    public String getClassName() {
        return className;
    }

    public void setClassName(String className) {
         = className;
    }

    @Override
    public String toString() {
        return "FieldsData{" +
                "className='" + className + '\'' +
                ", name='" + name + '\'' +
                ", typeName='" + typeName + '\'' +
                '}';
    }
}

 

相关文章