java – 使用m前缀现有字段
发布时间:2020-05-28 15:34:53 所属栏目: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事件(但它是一个开始). (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
