英国T4学生签证 可以做网站吗,net后缀的可以做网站吗,9.9网站怎么做,wordpress网页排版插件1.什么是NPE#xff1f;
NPE#xff0c;即NullPointerException#xff0c;是开发中最常见的问题之一#xff0c;有必要知道如何正确地处理NPE。 对于 Java 开发者来说#xff0c;null 是一个令人头疼的类型#xff0c;一不小心就会发生 NPE #xff08;空指针#xf…1.什么是NPE
NPE即NullPointerException是开发中最常见的问题之一有必要知道如何正确地处理NPE。 对于 Java 开发者来说null 是一个令人头疼的类型一不小心就会发生 NPE 空指针 问题。也是 Java 语言为人诟病的一个重要原因之一。在我们消除可恶的 NPE 问题之前我们要回顾一下 Java 中 null 的概念。
2.有6种情况下会出现NPE问题
在空对象上调用实例方法
public static void test4(){List list null;int aaalist.size();
}
访问空对象上的字段
public static void test5(){ListString list null;String aaalist.get(0);
}
抛出空异常
public static void test1(){throw null;
}
空字符比较
public static void test3(){String str this is a test;boolean flag str.equals(this is a test);System.out.println(equals result flag);str null;flag str.equals(this is a test);System.out.println(equals result flag);
}
直接return null
public static String test6(){return null;
} 对空对象进行同步或在同步块内使用null
public static void test2(){Object obj null;synchronized (obj){//.....}
}
以上只是一些关键代码所有代码请参见下面代码仓库
代码仓库
GitHub - Harries/Java-demo(npe)
Note NPE问题一定是由逻辑错误触发的因此使一定可以通过编码解决的对于NPE问题要做到早暴露早修复严禁使用try catch掩盖编码错误。 对于程序的调用方和开发方要么是调用方对接口的调用出现了逻辑错误要么是开发方的代码存在逻辑错误。
如果是调用方的问题这个问题被调用方式无法解决的属于参数校验的检验内容通过对参数的校验及时发现NPE问题同时提高充分的信息提示调用方修改例如返回错误码和错误信息。如果是开发方代码存在问题就要修复产生NPE问题的代码。如加入判空使用空的集合代替null。
3.如何预防好NPE问题
对于调用equal方法判断对象相等的情景在已知不为空的对象上调用如对于字符串判断相等使用字符串调用equal而不是未知对象。对于返回字符串的情况返回空白字符串而不是null。对于返回容器类的情况返回空容器Collections.EMPTY_LIST而不是null。使用NotNull和Nullable提示调用者所需的参数注解本身不会检查代码但是可以有效提示调用者同时在使用一些静态检查框架的时候起作用也可以再JavaDoc文档中自动标识。在定义变量的时候赋予合适的初始值如或者空的容器Collections.EMPTY_LIST。使用Optional