检查时,认识到自定义的断言我有下面的一段Java代码:如何配置Eclipse(Java)的对抗潜在的空指针
public void silence(final Object key) {
final Chain chain = (Chain)getChain(key);
checkPrecondition(chain != null);
chain.silence();
}
的checkPrecondition调用产生了一个运行时异常,如果链为空,但是Eclipse似乎没有“得到这个”:它说chain.silence()是一个可能的空指针访问(警告)。 问题:如何“告诉”Eclipse,checkPrecondition()确保链不为空,即具有断言的性质?我知道我可以禁用此警告,但我宁愿不这样做,因为在其他情况下,这可能是合理的。有趣的是,当我删除checkPrecondition()调用时,警告消失了(这正是我期望看到的情况)。
我在Windows上使用Eclipse 4.4.2(32位)。 Java VM是1.3(!)。更新到较新版本的任何一个目前都不是一种选择。
无关:因为您担心代码质量......请考虑一下,如果您真的想遵循那种在所有地方都放置“最终”的丑陋方法。使链最终为此方法增加*零*值。这只是线路噪声,没有真正的目的。 – GhostCat
在这种情况下,“最终”的使用无可否认地限制了收益,但也没有成本。所以完全没有损失。在其他上下文中,“final”的使用传达了程序员的意图,并且可能导致在编译时检测到编码错误,而不是通过繁琐的测试。我们的编码准则明确要求使用“最终”,所以我所见过的最现代和严格的编码准则也是如此。非常高的好处! – FreeSpirit64
因此,Java语言的人们花费宝贵的时间来改进编译器,以便有效地检测**最终变量 - 这样您就不必为事后未更改的局部变量写下最终的变量;-)。 ..当你让我好奇:你能给一些例子链接? – GhostCat