如何定义一个可以在java中获取任意参数的方法?

sym*_*ony 3 java

如何定义一个可以在java中获取任意参数的方法?有演示吗?

Boz*_*zho 10

varargs在Java 5中引入.

例如:

public String join(String... parts);
Run Code Online (Sandbox Code Playgroud)

这实际上是一个快捷方式:

public String join(String[] parts);
Run Code Online (Sandbox Code Playgroud)

parts参数在方法中用作数组,但可以在不构造数组的情况下调用该方法(如obj.join(new String[] {part1, part2, part3}))

但是要非常小心,因为可能会产生歧义.例如:

public void write(String author, String... words);
public void write(String... words);
Run Code Online (Sandbox Code Playgroud)

如果要调用哪种方法obj.write("Mike", "jumps")?编译器足够聪明,可以检测出歧义,但是我遇到过一些编译器没有发现这些问题的情况(不能完全回忆)

当物体属于相同类型或至少具有相同的功能目标时,使用varargs是实用的.如果你想要不同的论点.例如:

public String publishBook(String title, [String author], 
      [String isbn], [boolean hardcover]); // [..] would mean optional
Run Code Online (Sandbox Code Playgroud)

那么你需要重载你的方法