今天分享一个线上bug,还好没有出大问题,默默改掉了。
代码大致如下:
typescript
public class ContainTest {
public static void main(String[] args) {
List<String> list = getList();
String a = list.get(0);
String b = list.get(1);
//只判断了a是否为null,没判断b,造成了contains方法抛出空指针
if (!StringUtils.isEmpty(a)&&a.contains(b)) {
System.out.println("a包含b");
}
}
private static List<String> getList() {
List<String> list = new ArrayList<>();
list.add("test");
list.add(null);
return list;
}
}
String的contains方法的参数不能为null,否则会抛出空指针异常。 我们看下contains方法的源码:
typescript
public boolean contains(CharSequence s) {
return indexOf(s.toString()) > -1;
}