maven 依赖
<dependencies>
<dependency>
<groupId>com.github.javaparser</groupId>
<artifactId>javaparser-symbol-solver-core</artifactId>
<version>3.6.5</version>
</dependency>
<dependency>
<groupId>com.github.javaparser</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 = JavaParser.parse(in);
String mainClass = cu.getType(0).getName().asString();
NodeList<ImportDeclaration> imports = cu.getImports();
if (imports != null) {
for (int i = 0; i < imports.size(); i++) {
importName.add(imports.get(i).getNameAsString());
}
}
//System.out.println("imports:" + importName);
for (TypeDeclaration typeDec : cu.getTypes()) {
List<BodyDeclaration> members = typeDec.getMembers();
if (members != null) {
for (BodyDeclaration member : members) {
parserBodyDeclaration(cu.getType(0).getName().asString(), member);
}
}
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} finally {
if (in != null) {
try {
in.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
return fieldsDataList;
}
public void parserBodyDeclaration(String className, BodyDeclaration member) {
if (member instanceof FieldDeclaration) {
FieldDeclaration field = (FieldDeclaration) member;
// NodeList annotations = member.getAnnotations();
// if (annotations != null && annotations.size() > 0) {
// System.out.println("annotations:" + annotations.get(0));//注解
// } else {
// System.out.println("annotations is empty");
// }
// System.out.println("matamodel:" + member.getMetaModel()); //Core10000101In
// System.out.println("comment:" + member.getComment().orElse(null)); 注释
// System.out.println("class: " + className + ",name: " + field.getVariable(0).getName().asString() +
// ",type:" + field.getElementType().asString());
String elementType = field.getElementType().asString();
for (int i = 0; i < importName.size(); i++) {
if (importName.get(i).endsWith(elementType)) {
elementType = importName.get(i);
break;
}
}
fieldsDataList.add(new FieldsData(field.getVariable(0).getName().asString(),
elementType, className));
}
if (member instanceof ClassOrInterfaceDeclaration) {
ClassOrInterfaceDeclaration field = (ClassOrInterfaceDeclaration) member;
// NodeList<AnnotationExpr> annotations = field.getAnnotations();
// if (annotations != null && annotations.size() > 0) {
// System.out.println("class annotaions:" + annotations.get(0).getName());
// }
SimpleName name = field.getName();
String classNameNew = className + "." + name.asString();
NodeList<BodyDeclaration<?>> members2 = field.getMembers();
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) {
this.name = name;
this.typeName = typeName;
this.className = className;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getTypeName() {
return typeName;
}
public void setTypeName(String typeName) {
this.typeName = typeName;
}
public String getClassName() {
return className;
}
public void setClassName(String className) {
this.className = className;
}
@Override
public String toString() {
return "FieldsData{" +
"className='" + className + '\'' +
", name='" + name + '\'' +
", typeName='" + typeName + '\'' +
'}';
}
}