Java:使用javaparser格式化Java源文件
·
1. 声明
当前内容主要为本人学习和使用javaparser格式化当前的java源文件,实现像eclipse的format功能
基本pom依赖
<dependency>
<groupId>com.github.javaparser</groupId>
<artifactId>javaparser-symbol-solver-core</artifactId>
<version>3.22.1</version>
</dependency>
2. 基本demo
package com.hy.java.javafile.format;
import java.io.File;
import java.io.FileNotFoundException;
import java.util.List;
import java.util.Optional;
import com.github.javaparser.JavaParser;
import com.github.javaparser.ParseResult;
import com.github.javaparser.StaticJavaParser;
import com.github.javaparser.ast.CompilationUnit;
import com.github.javaparser.ast.ImportDeclaration;
import com.github.javaparser.ast.Node;
import com.github.javaparser.ast.NodeList;
import com.github.javaparser.ast.PackageDeclaration;
import com.github.javaparser.symbolsolver.JavaSymbolSolver;
/**
*
* @author hy
* @createTime 2021-07-24 18:40:30
* @description 实现格式化java源代码的操作
*
*/
public class JavaFileFormatTest {
public static void main(String[] args) {
File file = new File("D:\\eclipse-workspace\\Java8BasicReStudy\\src\\com\\hy\\java\\javafile\\format\\JavaFileFormatTest.java");
try {
//CompilationUnit compilationUnit=StaticJavaParser.parse(file);
//NodeList<ImportDeclaration> imports = compilationUnit.getImports();
// 或者使用下面的方式
JavaParser javaParser=new JavaParser();
ParseResult<CompilationUnit> parse = javaParser.parse(file);
if(parse.isSuccessful()) {
Optional<CompilationUnit> result = parse.getResult();
CompilationUnit compilationUnit = result.get();
//NodeList<ImportDeclaration> imports = compilationUnit.getImports();
//System.out.println(imports);
List<Node> childNodes = compilationUnit.getChildNodes();
for (Node node : childNodes) {
if(node instanceof ImportDeclaration) {
System.out.print(node);
}else if(node instanceof PackageDeclaration) {
System.out.print(node);
}else{
System.out.println(node);
}
}
}
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
private void hello() {System.out.println("hello");}
}
直接格式化当前的文件
3.结果
格式化成功,注意当前的Node实际上就是不同的节点(Class节点,packageDeclare,importDeclare等之类的)
比jdk自带的要好(jdk的不能有行注释否则报错)
更多推荐
已为社区贡献4条内容
所有评论(0)