前言
当一个变量的值为 null 时,在 Java 里面表示一个不存在的空对象,没有实际内容,没有给它分配内存,null 也是对象成员变量的默认值。所以,一个对象如果没有进行初始化操作,则调用这个对象的方法或者变量,就会出现空指针异常。空指针它是属于运行时异常 RuntimeException 的子类,不是捕获型的,只有在程序运行时才报出来,而且会造成程序中断。
字符串比较常量放前面
1 2 3 4 5 6 7 8
| if(status.equals(system)){
} if(SUCCESS.equals(status)){
}
|
初始化默认值
1 2 3
| Object object = new Object(); String s = StringUtils.EMPTY;
|
返回空集合
1 2 3 4
| public List<SysLog> getSysLogList(){ List<SysLog> list = sysLogMapper.getSysLogList(); return list == null ? new ArrayList<SysLog>() : list; }
|
Assert(断言)
测试代码或者调试程序时,总会做出一些假设,断言就是用于在代码中捕捉这些假设。
1 2 3 4 5 6 7 8 9 10 11 12
|
assert userId == null : "用户ID不能为空";
public List<SysLog> getSysLogListByUserId(String userId) { Assert.notNull(userId, "用户ID不能为空"); return sysLogMapper.getSysLogListByUserId(userId); }
|
使用Java8新特性Optional
方法说明
- of 把指定的值封装为Optional对象,如果指定的值为null,则抛出NullPointerException
- empty 创建一个空的Optional对象
- ofNullable 把指定的值封装为Optional对象,如果指定的值为null,则创建一个空的Optional对象
- get 如果创建的Optional中有值存在,则返回此值,否则抛出NoSuchElementException
- orElse 如果创建的Optional中有值存在,则返回此值,否则返回一个默认值
- orElseGet 如果创建的Optional中有值存在,则返回此值,否则返回一个由Supplier接口生成的值
- orElseThrow 如果创建的Optional中有值存在,则返回此值,否则抛出一个由指定的Supplier接口生成的异常
- filter 如果创建的Optional中的值满足filter中的条件,则返回包含该值的Optional对象,否则返回一个空的Optional对象
- map 如果创建的Optional中的值存在,对该值执行提供的Function函数调用
- flagMap 如果创建的Optional中的值存在,就对该值执行提供的Function函数调用,返回一个Optional类型的值,否则就返回一个空的Optional对象
- isPresent 如果创建的Optional中的值存在,返回true,否则返回false
- ifPresent 如果创建的Optional中的值存在,则执行该方法的调用,否则什么也不做
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
|
Optional<Integer> optional1 = Optional.of(1);
Optional<Integer> optional2 = Optional.ofNullable(null);
Optional<Integer> optional3 = Optional.ofNullable(2);
Optional<Integer> optional1 = Optional.ofNullable(null); Optional<Integer> optional2 = Optional.ofNullable(null); System.out.println(optional1 == optional2); System.out.println(optional1 == Optional.<Integer>empty());
Optional<Integer> optional1 = Optional.ofNullable(1); Optional<Integer> optional2 = Optional.ofNullable(null); System.out.println(optional1.isPresent() == true); System.out.println(optional2.isPresent() == false);
|