为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

动漫人物 2021-08-19 21:28:28
我在 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";

}


查看完整回答
反对 回复 2021-08-19
  • 1 回答
  • 0 关注
  • 153 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信