Java IntelliJ能否将属性(get/setter)重构为字段?
比如说,我有一大堆实现了javabean风格的类,我想去掉getter/setter,而只使用公共字段。有没有办法在不破坏编译的情况下,使用Intellij14有效地重构它 示例-之前:Java IntelliJ能否将属性(get/setter)重构为字段?,java,intellij-idea,Java,Intellij Idea,比如说,我有一大堆实现了javabean风格的类,我想去掉getter/setter,而只使用公共字段。有没有办法在不破坏编译的情况下,使用Intellij14有效地重构它 示例-之前: class Baratheon { private String stannis; public String getStannis() { return stannis; } public void setStannis(String stannis) {
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");
}
}
--之后:
重构过程中涉及的明显步骤包括:
我认为intellij中没有一个重构工具可以完成整个工作,要记住,只有当整个受影响的代码库都在一个项目中时,重构才是真正可能的。你可以考虑写一个完成这项工作的函数。1.使对字段的访问与getter的访问相同
2.右键单击getter,然后选择重构/内联。。。(在Android Studio中)为什么要这样做?有很好的理由控制对字段值和语言的访问,对允许访问字段提供合理的本机支持,还可以让您在不破坏API的情况下恢复到getter/setter。在Java中,这是不可能的——一旦有人访问了您的领域,如果不更改API,就无法收回它。我希望避免这种争论,只关注intellijDidn的特性,我不知道内联重构。当选择“内联所有调用并删除方法(n次出现)”时,该方法将完成大部分工作。令人惊叹的!
class Baratheon {
public String stannis;
}
class Lannister {
public Lannister() {
Baratheon b = new Baratheon();
b.stannis = "dead";
}
}