我在 Java 代码中使用 Eclipse Neon,当我想"subject"在具有变量名称的同时提取常量(例如字符串值)时:String subject = "subject";当提取 Eclipse 为我提供时,SUBJECT2虽然我没有SUBJECT常数。它似乎受现有变量名称的影响。我可以指示 Eclipse 推荐我,SUBJECT因为它是独一无二的吗?没发现这个问题,这个bug可以报告给eclipse吗?编辑"subject"从以下内容中提取时,它建议SUBJECTp.put("subject", "mySubject");(不同的代码)"subject"从以下内容中提取时,它建议SUBJECT2String subject = null;p.put("subject", "mySubject");编辑 2只是添加到@howlger 评论,即使主题变量不是 有效的 final,它仍然建议SUBJECT2:String subject = null;p.put("subject", "mySubject");subject = "notFinal";
1 回答
BIG阳
TA贡献1859条经验 获得超6个赞
Eclipse为常量建议了一个唯一的名称,该名称不等于忽略其他常量的大小写,也忽略其他变量、参数和字段的大小写。这样做是出于代码约定的原因,而不仅仅是为了避免编译器错误。
在给定的示例中String subject = "subject";,有两种情况:
Ifsubject是隐式 final,subject在将“主题”提取到常量之前内联。
如果subject是不隐含最终所提取的任一名称:因为不同的值以后分配常数应更加具体(例如SUBJECT_DEFAULT)或所述的名称变量更通用。
在这种情况下,我喜欢 Eclipse 为名称添加后缀这一事实。但在我看来,还有其他情况可以提出更好的建议(不幸的是,这也意味着更复杂)。这是一个示例,其中根据调用Extract to constant 的位置提出不同的建议:
public void foo(String subject) {
System.out.println("subject"); // -> private static final String SUBJECT2 = "subject";
}
public void bar() {
System.out.println("subject"); // -> private static final String SUBJECT = "subject";
}
添加回答
举报
0/150
提交
取消