1.使用CollectionUtils.isEmpty判断空集合

public class TestIsEmpty {
static class Person{}
static class Girl extends Person{} public static void main(String[] args) {
List<Integer> first = new ArrayList<>();
List<Integer> second = null;
List<Person> boy = new ArrayList<>();
boy.add(new Girl());
System.out.println(CollectionUtils.isEmpty(first));//true
System.out.println(CollectionUtils.isEmpty(first));//true
System.out.println(CollectionUtils.isEmpty(first));//false System.out.println(first==null);//false
System.out.println(second==null);//true
System.out.println(boy==null);//false System.out.println(first.size()); //size=0
System.out.println(second.size());// NullPointerException
System.out.println(boy.size()); //size=1 System.out.println(first.isEmpty()); //true
System.out.println(second.isEmpty()); //NullPointerException
System.out.println(boy.isEmpty()); //false 所以:
isEmpty() 或者(list.size() == 0)用于判断List内容是否为空,即表里一个元素也没有
但是使用isEmpty()和size()的前提是,list是一个空集合,而不是null,
所以为了避免异常,建议在使用或赋值list集合之前,做一次空集合创建处理,进行内存空间分配,即: List list2 = new ArrayList()
判断不为空的情况: list!=null && !list.isEmpty()
}
}

二 .容易出现空指针的地方

1.实体类里定义的集合

public class Org {
private Long id;
private String title;
private Long parent;
private List<User> list; public Long getId() {return id;}
public void setId(Long id) {this.id = id;}
public String getTitle() {return title;}
public void setTitle(String title) {this.title = title;}
public Long getParent() {return parent;}
public void setParent(Long parent) {this.parent = parent;}
public List<User> getList() {
if(list==null){
list=new ArrayList<>(); //这里最好对这个集合处理一下,防止报空指针
}
return list;
} public void setList(List<User> list) {
this.list = list;
}
}

2.自己定义的集合接收数据库查询的数据

如:List<Org> users=userService.getAll();
如果查询结果为空,users.size=0.users是一个空集合,但不是空
使用前最好判断一下是不是为空

NullPointerException-----开发中遇到的空指针异常的更多相关文章

  1. Android开发中,那些让您觉得相见恨晚的方法、类或接口

    Android开发中,那些让你觉得相见恨晚的方法.类或接口本篇文章内容提取自知乎Android开发中,有哪些让你觉得相见恨晚的方法.类或接口?,其实有一部是JAVA的,但是在android开发中也算常 ...

  2. Android应用开发中关于this.context=context的理解

    在Android应用开发中,有的类里面需要声明一个Context的成员变量,然后还需要在该类的构造函数中加上this.context=context;这行代码.为什么要这么写呢?不写不行么? 先看下面 ...

  3. JAVA开发中遇到的异常总结

    最常见的五种异常:必会,面试题: 算术异常类:ArithmeticExecption 空指针异常类:NullPointerException 类型强制转换异常:ClassCastException 数 ...

  4. Android开发中的输入合法性检验

    Why ? 合法性检查对于程序的健壮性具有重要作用.在Android开发中,良好的合法性检查设计机制可以使程序更加清晰,产生bug更少,交互更加友好. What ? 合法性检查的目的在于确定边界.对于 ...

  5. android开发中遇到的各种问题收集--不定期更新

    以下问题都是自己在开发中亲身碰到的 ,在这里留个备份,方便下次查阅. 1.java.lang.IllegalStateException ,Cannot execute task: the task ...

  6. Android开发中常见的设计模式

    对于开发人员来说,设计模式有时候就是一道坎,但是设计模式又非常有用,过了这道坎,它可以让你水平提高一个档次.而在android开发中,必要的了解一些设计模式又是非常有必要的.对于想系统的学习设计模式的 ...

  7. Java 开发中如何正确踩坑

    为什么说一个好的员工能顶 100 个普通员工 我们的做法是,要用最好的人.我一直都认为研发本身是很有创造性的,如果人不放松,或不够聪明,都很难做得好.你要找到最好的人,一个好的工程师不是顶10个,是顶 ...

  8. 记一次SpringBoot 开发中所遇到的坑和解决方法

    记一次SpringBoot 开发中所遇到的坑和解决方法 mybatis返回Integer为0,自动转型出现空指针异常 当我们使用Integer去接受数据库中表的数据,如果返回的数据中为0,那么Inte ...

  9. IT蓝豹强烈推荐:符合1-2年工作经验,开发中的难点及相关优化:

    IT蓝豹强烈推荐:符合1-2年工作经验,开发中的难点及相关优化: IT蓝豹 ------------------> sqlite数据库版本升级 1.sqlite升级步骤: 1.自己写一个类继承自 ...

  10. EBS OAF开发中的错误/异常处理(ErrorHandling) (转)

    原文地址 EBS OAF开发中的错误/异常处理(ErrorHandling) EBS OAF开发中的错误/异常处理(ErrorHandling) (版权声明,本人原创或者翻译的文章如需转载,如转载用于 ...

随机推荐

  1. Django REST framework 之分页,视图,路由,渲染器

    1.分页 2.视图 3.路由 4.渲染器 1.分页 方法一: from django.shortcuts import render from rest_framework.versioning im ...

  2. swift的调用约定

    swift的静态绑定 Swift Calling Convention @convention(swift) func foo(_ x:Int, y:Int) sil @foo : $(x:Int, ...

  3. UVA12171-Sculpture(离散化+floodfill)

    Problem UVA12171-Sculpture Accept: 196  Submit: 1152 Time Limit: 3000 mSec Problem Description Imagi ...

  4. 在阿里云Centos下LNMP环境搭建

    首先,需要安装C语言的编译环境,因为Nginx是C语言编写的.通常大多数Linux都会默认安装GCC,如果没有的话,可以如下安装. 安装make: yum -y install gcc automak ...

  5. win10下SVN图标不显示

    win10系统的SVN图标不现实了.正常情况下,会在文件夹上有一个对勾 但是对勾以及所有的SVN图标都突然消失了,都不知道文件什么状态了. 经过一通搜索,发现问题所在(都指向注册表图标被占用).原因就 ...

  6. docker常用常用删除操作

    文章参考 https://blog.csdn.net/superdangbo/article/details/78688904 https://www.cnblogs.com/jackadam/p/8 ...

  7. vscode中iframe的使用

    vscode中iframe由于某种原因不支持本地页面,比如<iframe src ="index.html" width="300" height=&qu ...

  8. python简介及安装配置

    概述 python是解释型语言,相对编译型语言,执行效率较低.python是通过c语言编写,官方解释器也是c语言编写cpython,也有其他的如用java编写的jpython.目前有2.0和3.0版本 ...

  9. 看think in java 随笔

    java的方法是运行期动态绑定上去的,可以根据自己真正实例化的类来判断调用哪个方法,比如子类重写了父类方法,会调用子类方法. 而利用final关键字可以让方法不能重写,就可以在编译期就绑定,这样就可以 ...

  10. CF662C Binary Table FWT

    传送门 \(N \leq 20\)很小诶 一个暴力的思路是枚举行的翻转状态然后在列上贪心 复杂度为\(O(2^NM)\)显然过不去 考虑到可能有若干列的初始状态是一样的,那么在任意反转之后他们贪心的策 ...