IntelliJ可以将属性(get / setters)重构为字段吗?

时间:2016-05-01 13:36:48

标签: java intellij-idea

假设我有一堆实现了javabean-style的类,我想摆脱getter / setter而只是拥有公共字段。有什么方法可以在不破坏编译的情况下使用IntelliJ 14有效地重构它?

示例 - 之前:

class Baratheon {
    private String stannis;
    public String getStannis() {
        return stannis;
    }
    public void setStannis(String stannis) {
        this.stannis = stannis;
    }
}

class Lannister {
    public Lannister() {
        Baratheon b = new Baratheon();
        b.setStannis("dead");
    }
}

- 后:

class Baratheon {
    public String stannis;
}

class Lannister {
    public Lannister() {
        Baratheon b = new Baratheon();
        b.stannis = "dead";
    }
}

2 个答案:

答案 0 :(得分:2)

您的重构涉及的明显步骤是:

  1. 将字段设为公开,保留访问者。

  2. 将客户端代码更改为直接访问字段而不是通过访问者。

  3. 删除访问者。

  4. 可以利用intellij中的'inline ...'重构(Ctrl + Shift + n)来帮助完成第2步。

    我认为intellij中没有一个重构工具可以完成整个工作,请记住,只有整个受影响的代码库都在一个项目中才能实现。你可以考虑编写一个plugin来完成工作。

答案 1 :(得分:0)

1.可以访问与getter相同的字段 2.右键单击getter然后选择refactor / inline ...(在Android Studio中)