分享一个空指针的bug

今天分享一个线上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;
}
相关推荐
程序员buddha17 小时前
Spring Boot框架,类注入成 Bean的方式
java·spring boot·后端
铁皮饭盒17 小时前
bun 和 pnpm 谁硬? 谁软?
前端·后端
用户83562907805117 小时前
使用 Python 创建 Excel 雷达图
后端·python
程序员cxuan17 小时前
还在用 xigh 拉满跑?大错特错
人工智能·后端·程序员
城管不管17 小时前
什么是Prompt?
android·java·数据库·语言模型·llm·prompt
AI大模型17 小时前
被AI抢饭碗的Java程序员,后来都怎样了?
java·后端·ai编程
苦逼的猿宝17 小时前
医院管理系统.(源码+论文)
java·毕业设计·springboot·计算机毕业设计
東雪木17 小时前
JVM 与 Java 内存模型 专属复习笔记
java·jvm·笔记·java面试
爱睡觉11118 小时前
从 6500ms 到 49ms:一次 Java 内存布局优化的实录
java
摇滚侠18 小时前
IDEA 新建 Java 项目 学习 Java SE
java·学习·intellij-idea