java – 使用m前缀现有字段

前端之家收集整理的这篇文章主要介绍了java – 使用m前缀现有字段前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在尝试为我的项目进行结构替换.我有一个包含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事件(但它是一个开始).

猜你在找的Java相关文章