在改代码的时候,发现一个奇怪的地方,举例如下
@Test
public void buildTest(){
TT t = new TT();
Long time = t==null?System.currentTimeMillis():t.getTime();
System.out.println("done");
}
@Data
public static class TT{
Long time;
}
这个地方运行就会报错,空指针异常
后来查了一下,GPT是这么回答的:
对于一个三元表达式,它会在执行的时候逐个计算其分支,然后根据条件的真假来选择返回哪个分支的结果。问题在于,如果某个分支中有引用类型(例如调用方法或访问属性),而这个引用值为 null,那么在执行这个分支的时候就会触发空指针异常。
这是因为在执行分支时,Java 会尝试解引用引用类型(调用其方法或访问其属性),但是如果引用值为 null,就无法继续操作。这就导致了空指针异常。
如果不是引用类型,直接放null是没有问题的,切记