最近在review项目的代码的时候,发现有很多处比较String字符串是否相等的代码采取的是以下方式:(假设有2个String的变量str1、str2)
str1.equals(str2)
str1!=null && str1.equals(str2)
【解析】
第1点是完全没有考虑str1为null的情况,当str1为1时,系统将抛出null point Execption,系统健壮性极差。
第2点已经在考虑str1的为null的情况,代码不会出现异常,但整个项目可以会重复用到这条语句,故需考虑代码是否冗余。
【建议】
在java.util.Objects中,已经封装好了如上面第二点的代码。具体的调用方式如下:
import java.utils.Objects;
.....
Objects.equals(str1,str2);
Objects提供的静态equals方法,解释如下,如果str1和str2其中一个为null则返回false;如果2个都为null则返回true;当两者都不为null的情况下,调用str1中定义的equals方法,即str1.equals(str2)。
优势显而易见,但是很多开发人员并不清楚utils包里面有封装该比较,故发此博文。
转载于:https://blog.51cto.com/7348450/1741028