这是我不确定的问题而不是问题。我在测试过程中遇到的这段代码。我现在要把代码粘贴到这里。
static void count(String...obj){
System.out.println(obj.length);
}
public static void main(String str[]){
count(null,null,null);
count(null,null);
count(null);
}
程序运行良好,输出为3 2,在最后一次计数调用中,它抛出一个零点异常(显然已经足够了)。顺便说一下,测试中的问题是什么。 无论如何,我无法理解什么样的函数参数(String ... obj)。 请有人帮帮我。
答案 0 :(得分:6)
它是一个varargs parameter,它基本上允许你指定多个参数,让编译器为你创建一个数组。
您在最后一行获得NPE的原因是编译器可以有效地选择:
count(new String[] { null })
和
count((String[]) null)
......它更喜欢后者。
您可以通过强制转换null
:
count((String) null);
答案 1 :(得分:0)
这是指定数组参数的另一个版本。
count(String...obj)
表示count方法接受String []
等于
count(String[] obj)
答案 2 :(得分:0)
String ...接受一系列String参数或String数组。当放置null时,我猜它被解释为空数组。
答案 3 :(得分:0)
这些方法参数称为varargs,允许将给定类型的任意数量的参数传递给您的方法。如an answer to another question中所述,它们是在Java 1.5中引入的,尽管它们不适用于Java移动版本。