Java IDEs空指针警报
是否有IDE或IDE插件可以提醒开发人员可能的NPE?例如:Java IDEs空指针警报,java,ide,Java,Ide,是否有IDE或IDE插件可以提醒开发人员可能的NPE?例如: Object[] x = getMyObjects(); if (x.length > 0){ // do my stuff } 如果IDE提醒x没有检查可能的空值,那就太好了。这将节省许多工程时间。除了约翰的答案之外 Eclipse3.4给了我一个非常好的信息,它类似于: 此时变量只能为null 起初我不敢相信,但这是真的。 这是两种表达方式: if ((var == null) && (var
Object[] x = getMyObjects();
if (x.length > 0){
// do my stuff
}
如果IDE提醒x没有检查可能的空值,那就太好了。这将节省许多工程时间。除了约翰的答案之外
Eclipse3.4给了我一个非常好的信息,它类似于: 此时变量只能为null 起初我不敢相信,但这是真的。 这是两种表达方式:
if ((var == null) && (var.getProperty().equals("")) {
if ((var != null) || (var..getProperty().equals("")) {
在许多其他有用的东西中,这是可以检测到的。还有一个可用的。NullPointerException本质上是编程错误 如果给定的数组为空,您可以做什么?跳过支票。更好的选择是返回空数组:
public Object [] getMyObjects() {
/// do a lot of stuff
if( nothingToReturn() ){
return new Object[0];
} else {
return nonNullArray;
}
}
所以
永远不要把Npe放在第一位
虽然这会很好,但很快你就会意识到你的代码是不可读的
这就是为什么“”在OOP中是如此重要的概念(这样其他对象就不会使您的数据无效)
我认为检查外部类是否返回null是公平的(顺便说一下,应该有很好的文档记录),但是对于内部方法,真正的问题是,自己的对象不知道自己实例变量的状态
注意这对于评论来说太大了,这就是为什么我提供了一个CW答案。您可能需要从添加插件开始,在每次保存时检查此类(以及更多)错误。如果还没有,也可以添加插件:-)Eclipse3.5(还有AFAIR3.4)有两个空指针编译器选项 您可以在
窗口
->首选项
->Java
->编译器
->错误/警告
->潜在的编程问题
我的首选设置是
Error
用于Null指针访问
(这肯定会引发异常)和Warning
用于潜在的Null指针访问
提示:如果要返回空数组,请创建一个最终的静态数组并返回该数组。@rsp:的确,遵循Null对象模式。您可以将此添加到answer.OP在他使用Netbeans的其中一条评论中告诉您的答案中。默认情况下,我的Eclipse副本会对此发出警告。嗯。。我使用NetBeans。想知道是否有它的插件+1给你,谢谢。除了你的问题,但是getMyObjects()
应该返回一个空数组,而不是null
@Bill the Lizard:Quite。我真的很讨厌这种事情,除非有@NonNull和类似的注释。不幸的是,这个警告在eclipse(3.5和更早版本)中被破坏了。它也会为内核发出,比如if(chars==null)(chars=newchar[128])[127]=ch代码>虽然字符,但在这里它永远不能为空。
if( x.length > 0 )