我在Eclipse 4.4.2中启用了警告方法可以是静态的(在Preferences => Java => Compiler =>错误/警告中)。
如果我使用“Refactor => Extract Method”(Alt + Shift + M)提取方法 getPath ,如下例所示,我收到警告,因为提取的方法可以是静态的。如何设置Eclipse以自动使提取的方法静态,如果它可以是静态的?
修改
在对bayou.io发表评论后,我看到如果父方法有静态修饰符,则提取的方法也会自动获得静态修饰符。如果公共父方法没有静态修饰符,我必须手动将其添加到提取的方法...如果我想这样做。理由似乎是静态方法可能是危险的。
如果我查看特殊情况,其中提取的方法不会修改任何静态(它是一个“纯静态辅助方法”,只适用于传递参数),我仍然更喜欢自动添加修饰符。
如果有什么事情会对这种行为造成危险,请告诉我。好吧,也许很难/不可能自动找出提取的方法是否是一种危险的静态方法。
我正在重构一些代码,之后我忘了将其他警告的数量减少到零。然后一位同事向我指出了我的警告,我的自我问了一个问题“为什么Eclipse没有注意静态修改器,如果它已经建议添加一个?” :)
提取前:
public String getAbsolutePath() {
boolean runningInEclipse = true;
if (runningInEclipse) {
return "baa complicated long expressions";
} else {
return "foo";
}
}
提取后:
public String getAbsolutePath() {
boolean runningInEclipse = true;
if (runningInEclipse) {
return getPath();
} else {
return "foo";
}
}
private String getPath() {
return "baa complicated long expressions";
}