Eclipse - 提取具有相似变量名称的常量时的错误建议

我在 Java 代码中使用 Eclipse Neon,


当我想"subject"在具有变量名称的同时提取常量(例如字符串值)时:


String subject = "subject";

当提取 Eclipse 为我提供时,SUBJECT2虽然我没有SUBJECT常数。它似乎受现有变量名称的影响。


我可以指示 Eclipse 推荐我,SUBJECT因为它是独一无二的吗?


没发现这个问题,这个bug可以报告给eclipse吗?


编辑


"subject"从以下内容中提取时,它建议SUBJECT


p.put("subject", "mySubject");

(不同的代码)"subject"从以下内容中提取时,它建议SUBJECT2


String subject = null;

p.put("subject", "mySubject");

编辑 2


只是添加到@howlger 评论,即使主题变量不是 有效的 final,它仍然建议SUBJECT2:


String subject = null;

p.put("subject", "mySubject");

subject = "notFinal";


动漫人物
浏览 154回答 1
1回答

BIG阳

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";}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java