java – 使用m前缀现有字段
发布时间:2020-12-15 00:36:02 所属栏目:Java 来源:网络整理
导读:我正在尝试为我的项目进行结构替换.我有一个包含100个类的包,每个包含1-20个字段.我们的项目正在迁移到匈牙利表示法,这意味着所有私有字段都必须以m为前缀. 我知道IntelliJ可以为新字段添加前缀,但我不知道为所有字段进行批量重构 – 重命名的配方. 正则表达
我正在尝试为我的项目进行结构替换.我有一个包含100个类的包,每个包含1-20个字段.我们的项目正在迁移到匈牙利表示法,这意味着所有私有字段都必须以m为前缀.
我知道IntelliJ可以为新字段添加前缀,但我不知道为所有字段进行批量重构 – >重命名的配方. 正则表达式不起作用,因为所有字段都是通过应用程序在所有类型的上下文,方法调用,赋值,算术运算中使用的…… 什么是最好的方法不是手动的? 解决方法
根据类似问题的答案(
here,here和
here)我想你可以使用 javaparser并创建一个小实用程序来为你做重构. 这是让你入门的东西: import japa.parser.JavaParser; import japa.parser.ParseException; import japa.parser.ast.CompilationUnit; import japa.parser.ast.body.FieldDeclaration; import japa.parser.ast.body.VariableDeclaratorId; import java.io.File; import java.io.FileWriter; import java.io.IOException; public class HungarianNotationRefactor { public static void main(String[] args) throws IOException,ParseException { File file = new File(args[0]); CompilationUnit cu; cu = JavaParser.parse(file); // get all types in file cu.getTypes() .stream() // get all members .flatMap(type -> type.getMembers().stream()) // filter only fields .filter(member -> member instanceof FieldDeclaration) .map(member -> (FieldDeclaration) member) // get all variables and rename .flatMap(field -> field.getVariables().stream()) .forEach(var -> var.setId(new VariableDeclaratorId("m_" + var.getId()))); try (FileWriter out = new FileWriter(file)) { out.append(cu.toString()); } System.out.println(cu.toString()); } } 这将重命名字段,但不会重命名.field事件(但它是一个开始). (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |