0

它是我不确定而不是问题的东西。我在测试期间遇到的这段代码。我现在要把代码粘贴到这里。

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)。有人可以帮我吗?

4

4 回答 4

6

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

您在最后一行中获得 NPE 的原因是编译器实际上可以选择:

count(new String[] { null })

count((String[]) null)

...而且它更喜欢后者。

您可以通过强制转换来强制它使用前一个转换null

count((String) null);
于 2012-08-02T14:02:05.573 回答
0

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

count(String...obj)

表示 count 方法接受 String[]

这等于

count(String[] obj)
于 2012-08-02T14:02:41.760 回答
0

String... 采用连续的 String 参数或 String 数组。当把 null 我猜它被解释为一个空数组。

于 2012-08-02T14:03:52.933 回答
0

这些方法参数称为varargs,并允许将任意数量的给定类型的参数传递到您的方法中。正如另一个问题的回答中提到的,它们是在 Java 1.5 中引入的,尽管它们不适用于 Java 移动版本。

于 2012-08-02T14:04:25.717 回答