今天在排查一个问题,涉及到可变参数,目测已经判空,结果还是报了错误,于是写了个小例子分享下:

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);
	}
}

           大家可以闭上眼睛想想输出结果:


java可变参数判空
 

    

我们再蛋疼的看一下下面程序的输出:

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呢,我们看一下运行结果。


java可变参数判空
 从上面我们可以看到,b仍然不为null,其实是一个new String[0]的东西,所以说我们动态参数判断

if(b != null)这个是相当没有意义的

相关文章: