以下代码仅仅使用了一个空引用作为可变参数。
调用方法
但是后面对
如果将其强制转换为
为什么在最后一个调用中需要显式类型转换?我认为这被视为具有
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
引用的字符串数组,这与第一次调用不同。正确答案是什么?
Arrays.asList(str);
构造了一个java.util.List
,其中包含一个null
条目。String str = null;
与正在创建的List
的引用没有任何关系(该引用不为null
)。 - Tiny