【发布时间】:2012-10-13 04:43:01
【问题描述】:
以下代码仅使用空引用作为可变参数。
package currenttime;
import java.util.Arrays;
public class Main
{
private static void temp(String...str)
{
System.out.println(Arrays.asList(str));
}
public static void main(String[] args)
{
temp(null,null);
temp(null);
}
}
第一次调用temp(null, null);方法显示[null, null]意味着str[0]=null和str[1]=null。
但后来对temp(null); 的调用导致NullPointerException 被抛出,看起来str 本身就是null。
如果它的类型转换为String 类似temp((String)null);,它会工作并显示[null]。
为什么在最后一次调用中,需要显式类型转换? 在我看来,它被认为是一个带有null 引用的字符串数组,这与第一次调用不同。正确答案是什么?
【问题讨论】: