一系列字符串与字符串Varargs

0 java arrays variadic-functions

void method(String[] a)和之间有什么区别void method(String... a)

第一种方法采用字符串数组,其中第二种方法采用一个或多个String参数.它们提供了哪些不同的功能?

此外,不知道为什么,但这是有效的:

public class Test {

    public static void main(String[] args) {
        String[] a = {"Hello", "World"};
        Test t = new Test();
        t.method(a);
    }

    void method(String...args) {
        System.out.println("Varargs");        // prints Varargs 
    }
}
Run Code Online (Sandbox Code Playgroud)

Stu*_*ske 6

只有在签名后面还有其他元素时才会有区别.

例如:

public void method(String[] args, String user){}
Run Code Online (Sandbox Code Playgroud)

是可能的,因为jvm不会认为user仍然是一个元素args.

public void method(String ... args, String user){}
Run Code Online (Sandbox Code Playgroud)

但是会引起麻烦.

  • 只是你知道:底部的例子甚至没有编译,java只允许varargs作为最后一个参数 (3认同)