Java 我有一个类型为void f(Strings…obj)的函数

Java 我有一个类型为void f(Strings…obj)的函数,java,string,overloading,Java,String,Overloading,这是我不确定的,而不是一个问题。这是我在测试中遇到的代码。我现在要将代码粘贴到这里 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,在最后一次计数调用中,它抛

这是我不确定的,而不是一个问题。这是我在测试中遇到的代码。我现在要将代码粘贴到这里

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,在最后一次计数调用中,它抛出一个空点异常(显然足够了)。顺便说一下,这是测试中的问题。 无论如何,我无法理解函数参数是什么类型的(字符串…obj)。 有人能帮我一下吗。

这是一个数组,它基本上允许您指定多个参数,并让编译器为您创建一个数组

在最后一行中获得NPE的原因是编译器实际上可以在以下两者之间进行选择:

count(new String[] { null })

。。。它更喜欢后者

您可以强制它使用前一个转换,方法是强制转换
null

count((String) null);
它是一个数组,基本上允许您指定多个参数,并让编译器为您创建一个数组

在最后一行中获得NPE的原因是编译器实际上可以在以下两者之间进行选择:

count(new String[] { null })

。。。它更喜欢后者

您可以强制它使用前一个转换,方法是强制转换
null

count((String) null);

它是指定数组参数的另一个版本

count(String...obj)
表示计数方法接受字符串[]

这等于

count(String[] obj)

它是指定数组参数的另一个版本

count(String...obj)
表示计数方法接受字符串[]

这等于

count(String[] obj)

字符串。。。获取一系列字符串参数或字符串数组。当输入null时,我猜它被解释为null数组。

字符串。。。获取一系列字符串参数或字符串数组。当输入null时,我猜它被解释为null数组。

这些方法参数称为,并且允许将任意数量的给定类型的参数传递到方法中。如中所述,它们是在Java 1.5中引入的,但在Java mobile版本中不可用。

这些方法参数称为,允许将给定类型的任意数量的参数传递到方法中。如中所述,它们是在Java 1.5中引入的,尽管它们在Java mobile版本中不可用。

谢谢您的帮助。。你能解释一下count(新字符串[]{null})和count(字符串[]null)之间的区别吗@KanwaljeetSingh:当然-第一个是对一个数组的引用,其中只有一个元素,元素为null。第二个只是一个null引用-根本没有数组。谢谢你,这很有用。你能解释一下count(新字符串[]{null})和count((字符串[]null)之间的区别吗@KanwaljeetSingh:当然-第一个是对一个数组的引用,只有一个元素,elemen是空的。第二个只是空引用-根本没有数组。