Java程序员怎么避免空指针异常?看完这篇文章再也不用担心了
Java程序员工作中遇到最多的错误就是空指针异常,无论你多么细心,一不留神就从代码的某个地方冒出NullPointerException,真是令人头疼。
到底怎么避免空指针异常?看完这篇文章,可以帮助你。
1. 对象设置默认值
Object obj = new Object(); String str = "";
2. 字符串比较,常量放前面
if ("success".equals(status)) {
// doSomething()
} 3. 方法返回空集合
public List<User> getUsers() {
List<User> users = userService.selectList();
return users == null ? Collections.emptyList() : users;
} 4. 转String,用valueOf()方法代替toString()
User user = null; String str = String.valueOf(user);
valueOf()方法源码是:
public static String valueOf(Object obj) {
return (obj == null) ? "null" : obj.toString();
} 5. 判空,用工具库
apache commons是最强大的,也是使用最广泛的工具类库,用它就行了。
// 字符串判空 String str = null; boolean isEmpty = StringUtils.isEmpty(str); // 判空的时候,会自动忽略空白字符,比如空格、换行 boolean isBlank = StringUtils.isBlank(str); // 集合判空 List<String> list = null; boolean isEmpty = CollectionUtils.isEmpty(list);
6. 用注解帮你检查
class User {
@NotNull
private Integer id;
@NotBlank
private String name;
} 7. 避免不必要的拆箱
// 下面会抛异常 Integer id = null; int newId = id;
8. 数据库字段要设置默认值
数值类型的字段设置默认0,varchar类型字段设置默认 '' 空串。
避免取出来使用的时候,还要进行判空。
9. 使用Java8的Optional
// 获取用户姓名,下面的代码,不会报异常 User user = null; Optional<User> optUser = Optional.ofNullable(user); String name = optUser.map(User::getName).orElse(null);
你觉得怎么样?还有哪些办法能避免空指针异常?
#Java##Java面试##java面试题##java#Java高频面试题精选 文章被收录于专栏
精选Java面试题,包含Java最新最核心的技术栈。带你解析Java常见的高频面试题,并深入剖析底层原理。本专栏全都是作者精心整理的Java高频问题,绝不是从网上复制摘抄的老掉牙问题,并附带详细的答案,绝不是一两句话就简略概括的,都是详实且经得起推敲的,帮你轻松应对工作面试。
