赞
踩
java.lang.NullPointerException: null
1、使用了equals()方法,但是使用了该方法的变量为null,导致报错。
解决办法:
- String str=null;
- if(str!=null&&str.equals("0")){
- return true;
- }
- return false;
2、包装类转基本类型时,包装类为null,导致报错。
解决办法:
包装类转基本类型之前先判断包装类是否为null。
- Integer num1 = null;
- if(num1 != null){
- int num2 = num1;
- }
3、包装类和基本类型比较时,包装类为null,导致报错。
解决办法:
包装类和基本类型比较之前先判断包装类是否为null。
- Integer num1 = null;
- int num2 = 1;
- bool flag = num1 != null && num1 == num2 ? true : false;
4、使用switch语句时,传参为null,导致报错。
- Integer int1 = null;
- switch (int1) {
- case 1:
- break;
- default:
- break;
- }
解决办法:
使用switch语句之前判断传参是否为null。
- Integer int1 = null;
- if(int1 == null){
- return;
- }
- switch (int1) {
- case 1:
- break;
- default:
- break;
- }
5、使用contains()方法时,调用contains()方法的变量或contain()传参为null。
- String str1 = null;
- String str2 = null;
- return str1.contains(str2);
解决办法:
使用contains()方法之前判断调用contains()方法的变量或contain()传参是否为null。
- String str1 = null;
- String str2 = null;
- if (str1 == null || str2 == null) {
- return false;
- }
- return str1.contains(str2);
6、三元运算符的返回值同时包含包装类和基本类型时,会将包装类型转换为基本类型,包装类型为null时会报错。
- Integer test1 = null;
- Integer test2 = null;
- //拆箱后变为Integer result = test1 == null ? test2.intValue() : test1.intValue();
- Integer result = test1 == null ? test2 : test1.intValue();
解决办法:
三元运算符的返回值全部变为基本类型,或者将有可能为null的包装类型改为直接返回null。
- Integer test1 = null;
- Integer test2 = null;
- //返回值全部变为基本类型
- Integer result = test1 == null ? 0: test1.intValue();
- //改为直接返回null
- Integer result = test1 == null ? null: test1.intValue();
7、使用Collectors.summarizingInt()、Collectors.summingLong()、Collectors.summingDouble()进行求和时,进行求和的属性值存在为null的情况。
- List<Integer> list=new ArrayList<>();
- long sum = list.stream().collect(Collectors.summingInt(x -> x));
解决办法:
属性值为null设置默认值即可。
- List<Integer> list=new ArrayList<>();
- long sum = list.stream().collect(Collectors.summingInt(x -> x == null ? 0 : x));
8、使用Float.parseFloat()、Float.valueOf()、Double.parseDouble()、Double.valueOf()等方法将字符串转换成对应的基本类型时,传参为null,导致报错。
- String str = null;
- Float.parseFloat(str);
- Float.valueOf(str);
- Double.parseDouble(str);
- Double.valueOf(str);
解决办法:
在使用Float.parseFloat()、Float.valueOf()、Double.parseDouble()、Double.valueOf()等方法之前,先用StrUtil.isNotEmpty()判断传参是否为null或空字符
- String str = null;
- Float num1 = StrUtil.isNotEmpty(str) ? Float.parseFloat(str) : null;
- Float num2 = StrUtil.isNotEmpty(str) ? Float.valueOf(str) : null;
- Double num3 = StrUtil.isNotEmpty(str) ? Double.parseDouble(str) : null;
- Double num4 = StrUtil.isNotEmpty(str) ? Double.valueOf(str) : null;
注:
StrUtil.isNotEmpty()方法需要引入Hutool依赖。
1、引用其他微服务时使用了jdk.nashorn.internal.ir.annotations.Reference注解,导致装配失败,@Reference对应的类为null。
解决办法:
将jdk.nashorn.internal.ir.annotations.Reference换成org.apache.dubbo.config.annotation.Reference。
import org.apache.dubbo.config.annotation.Reference;
1、使用ExcelWriter.write(List data, WriteSheet writeSheet, WriteTable writeTable)写数据时,writeTable的List<List<String>> head属性中的元素包含null,导致报错。
问题解决:
使用WriteTable.setHead(List<List<String>> head)方法给head赋值之前,将赋值List中的null全部变为空字符。
- WriteTable table = new WriteTable();
- table.setTableNo(1);
- List<List<String>> head = new ArrayList<>();
- for (int i = 0; i < head.size(); i++) {
- List<String> rowList = head.get(i);
- for (int j = 0; j < rowList.size(); j++) {
- if (rowList.get(j) == null) {
- rowList.set(j, "");
- }
- }
- }
- table.setHead(head );
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。