今天在排查一个问题,涉及到可变参数,目测已经判空,结果还是报了错误,于是写了个小例子分享下:
public class Test {
public static void main(String[] args) {
int a = 1;
String b = null;
testA(a,b);
}
private static void testA(int a, String... b) {
System.out.println(b == null);
System.out.println(b.length);
System.out.println(b[0] == null);
}
}
大家可以闭上眼睛想想输出结果:
我们再蛋疼的看一下下面程序的输出:
public class Test {
public static void main(String[] args) {
int a = 1;
String b = null;
//testA(a,b);
testA(a);
}
private static void testA(int a, String... b) {
System.out.println(b == null);
System.out.println(b.length);
System.out.println(b[0] == null);
}
}
我们知道,第三个报空指针没有悬念,那么这个时候b到底是不是null呢,我们看一下运行结果。
从上面我们可以看到,b仍然不为null,其实是一个new String[0]的东西,所以说我们动态参数判断
if(b != null)这个是相当没有意义的。