当前位置: 首页 > 面试题库 >

我可以自动重构整个Java项目并将大写方法参数重命名为小写吗?

邹英悟
2023-03-14
问题内容

我在一个Java项目中工作,其中很大一部分代码是用我不喜欢的格式样式编写的(也是非标准的),即所有方法参数都是大写的(还有所有局部变量)。

在IntellJ上,我可以使用“分析->检查代码”并实际上找到所有出现的大写方法参数(超过1000个)。

要解决一个问题,我可以做“重构>重命名参数”,它可以正常工作(假设没有重叠)。

有没有办法自动进行此重构(例如:将以大写字母开头的方法参数重命名为以小写字母开头的相同名称)?


问题答案:

使用源解析器

我认为您需要做的是使用javaparser之类的源代码解析器来执行此操作。

对于每个Java源文件,将其解析为CompilationUnit,创建一个Visitor,可能使用ModifierVisitorAdapter作为基类,并重写(至少)visit(MethodDeclaration, arg)。然后将更改后的CompilationUnit写入新文件,然后进行比较。

我建议不要更改原始源文件,但是创建一个影子文件树可能是一个好主意(例如,旧文件:src/main/java/com/mycompany/MyClass.java,新文件src/main/refactored/com/mycompany/MyClass.java,这样您就可以区分整个目录)。



 类似资料:
  • 问题内容: 我有大量的格式文件,以及。 如何重命名这些文件,使它们全部为大写,而忽略名称的数字部分? 问题答案:

  • 这里我有两个类DemoParent和DemoChild,它们扩展了DemoParent,在DemoParent中我有通用方法m1(int I),但在DemoChild中我有varargs方法m1(int…I)。当我创建子类的对象并调用m1方法时,它会给我父类方法输出。请参见下面的输出。o/p-母公司 有人能解释为什么父类方法总是从子类引用调用,即使子类具有相同的方法? 但是如果我们反向代码,即父类

  • 我想知道: 为什么在Java中不能重写静态方法? 静态方法可以在Java中重载吗?

  • 在子类中如果创建了一个与父类中相同名称、相同返回值类型、相同参数列表的方法,只是方法体中的实现不同,以实现不同于父类的功能,这种方式被称为 方法重写(override),又称为 方法覆盖。当父类中的方法无法满足子类需求或子类具有特有功能的时候,需要方法重写。 子类可以根据需要,定义特定于自己的行为。既沿袭了父类的功能名称,又根据子类的需要重新实现父类方法,从而进行扩展增强。 在重写方法时,需要遵循

  • 我有以下代码: 当我试图编译它时,会出现以下错误: java不接受“基类”作为参数吗?原因是什么?有没有其他方法来编写代码?

  • 我正在进行一个实验,在这个实验中,我们偶尔需要将小数字除以大数字,例如:4/90000。使用double可生成4.444e。我希望BigDecimal可以处理这个算法,并给我一个有意义的小数,但我的实现抛出了一个错误: 错误是: 更新:我对精度至少有3位小数很感兴趣。