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 blocke.printStackTrace();}}private void hello() {System.out.println("hello");}
}

直接格式化当前的文件

3.结果


格式化成功,注意当前的Node实际上就是不同的节点(Class节点,packageDeclare,importDeclare等之类的)

比jdk自带的要好(jdk的不能有行注释否则报错)

Java:使用javaparser格式化Java源文件相关推荐

  1. java stringformatter_Java 字符串格式化 —— java.util.Formatter

    标签: java.util.Formatter是JDK1.5新增的类,支持类似C中的printf风格的字符串格式化工作 Formatter有4个构造方法,如下: public Formatter() ...

  2. Java-Runoob-高级教程-实例-字符串:13. Java 实例 - 字符串格式化

    ylbtech-Java-Runoob-高级教程-实例-字符串:13. Java 实例 - 字符串格式化 1.返回顶部 1. Java 实例 - 字符串格式化  Java 实例 以下实例演示了通过 f ...

  3. java国际化——消息格式化+文本文件和字符集

    [0]README 1) 本文部分文字描述转自 core java volume 2 , 测试源代码均为原创, 旨在理解 java国际化--消息格式化+文本文件和字符集 的基础知识 : 2) 由于本文 ...

  4. java信息格式化,Java如何格式化包含时间信息的消息?

    在这里,我们演示如何使用java.text.MessageFormat该类来格式化包含时间信息的消息.package org.nhooo.example.text; import java.util. ...

  5. java.sql.date格式化_如何将java.sql.date格式化为这种格式:“MM-dd-yyyy”?

    我需要以下面的格式"MM-dd-yyyy"获取 java.sql.date,但是我需要它来保留java.sql.date所以我可以将它作为日期字段放入表中.因此,格式化后它不能是S ...

  6. java中table是什么标签_[Java教程]javascript格式化table标签内容

    [Java教程]javascript格式化table标签内容 0 2015-07-12 20:00:08 项目中遇到这样的需求,一大段文章正文的html代码在手机中显示不全,原因是由于其它有table ...

  7. bigint对应java什么类型_「JAVA」从格式化输出到扫描输入,深究Java正则表达式匹配之道

    字符串是不可变的 字符串是不可变的,也就是说当字符串的内容发生改变的时候,会创建一个新的String对象:但是如果内容没有发生改变的时候,String类的方法会返回原字符串对象的引用. 而正则表达式往 ...

  8. java向MySQL插入当前时间的四种方式和java时间日期格式化的几种方法(案例说明)...

    转载地址:http://www.devba.com/index.php/archives/4581.html java向MySQL插入当前时间的四种方式和java时间日期格式化的几种方法(案例说明); ...

  9. java 按位置格式化字符串_Java字符串格式化,{}占位符根据名字替换实例

    我就废话不多说了,大家还是直接看代码吧~ import java.beans.PropertyDescriptor; import java.lang.reflect.Method; import j ...

最新文章

  1. 李彦宏候选院士招致大批网民反对
  2. 就业技术书文件表格_Word格式:工程预结算工作流程图及工作表单,附20余表格...
  3. spi收发时的寄存器sr不变_我与SPI 的夜晚,只能说逻辑分析仪太次了
  4. MySQL预读失效_华为云MySQL新增“逻辑预读”特性,轻松解决线性预读失效问题...
  5. P4756-Added Sequence【斜率优化】
  6. 敏捷无敌之重任在肩(7)
  7. Linux内核设计第四周——扒开系统调用三层皮
  8. 经典排序算法 - 希尔排序Shell sort
  9. 最新白白iApp手册开源-iApp源码 非常牛逼
  10. linux设置ipsan_Linux挂载IPSAN和FCSAN操作
  11. Atitit 人工智能声音处理乐器总类以及midi规范的标示 目录 1. Atitit 乐器分类 打击乐器 1 1.1. 1.1. 打击乐器(各种鼓 三角铁等 1 2 1.2. 1.2. 管乐器
  12. 通过TABULATE过程制作汇总报表
  13. BZOJ2434[Noi2011]阿狸的打字机——AC自动机+dfs序+树状数组
  14. 神经网络matlab指纹识别_毕业设计论文-matlab指纹识别技术(含代码).doc
  15. 数控雕刻机和数控铣床都有什么区别
  16. 软件项目管理文档模板目录
  17. C# MessageBox.Show 用法
  18. android之按钮添加声音
  19. 用Python 操作 Excel,这篇文章别错过了!(超全总结)
  20. Chef自动化部署框架

热门文章

  1. Python几个常见的语法总结
  2. 02_MybatisPlus—CRUD 接口
  3. 《视觉slam十四讲》ch5相机与图像学习笔记(1)—— 实践部分imageBasics代码讲解
  4. 教练,我想学设计之禅
  5. 玻璃体改变php微,原始永存玻璃体增殖症(PHPV)
  6. iOS算法总结-希尔排序
  7. python控制手机微信_Python + Appium 自动化操作微信入门看这一篇就够了
  8. 学习大数据的第19天——正则表达式、枚举类
  9. javascript函数链式调用原理
  10. Ansys|关于使用HFSS仿真报错“the password is invalid for INTEL MPl to launch jobs. ”(附有安装方法)