String name; if (name.equals("") {} 如何避免空指针错误NullPointerException?

下面是应用场景:

record.getName() 返回一个String类型的变量name

这个name可能是null

发现有程序员写了这样一段代码

下面这种写法就容易报NullPointerException  下面这种就是一种严重错误的写法, 当name=null的时候,下面的句中
name.equals("")被执行的时候,就会运行异常(因为null对象根本不可能有equal方法可调用),

根本不会进行name == null的判断。 导致程序崩溃

public class ContactsService {String name = record.getName(); //
若name本身为空字符串,则传值nameEn if (name.equals("") || name == null) {
dto.setName(record.getNameEn()); } else {dto.setName(record.getName());}
改成下面的,就不会发生异常

String name = record.getName(); // 若name本身为空字符串,则传值nameEn if (name == null ||
name.equals("")) { dto.setName(record.getNameEn()); } else {
dto.setName(record.getName());}
但是,还有一个问题,如果name为空格字符串呢? 需要trim()操作

下面是Frank的优雅代码。保证任何情况下都不会NullPointerException!

public class ContactsService { // 若name本身为空字符串,则传值nameEn String name =
record.getName(); name = name == null ? "" : name.trim(); if (name.equals(""))
{ dto.setName(record.getNameEn()); } else { dto.setName(record.getName());}

技术
©2019-2020 Toolsou All rights reserved,
Unity-Demo实例之 ✨ 实现UI-背包装备拖拽功能计算机网络---计算机网络基本概念(协议、体系)某东14薪变16薪,是诚意还是套路?让人意想不到的Python之樱花树(turtle库的华丽样式)java四大函数式接口(重点,简单)06【若依框架解读】数据范围过滤--太牛了Unity3D之UGUI基础--画布的三种模式os模块的简单使用html写樱花树,写樱花树的作文