可变参数是JDK1.5引入的新特性,可以简化代码
- 适用场景:适用于需要传入或处理同类型未知参数个数的场景
package com.google.varargs;
import java.io.*;
public class TestVarargs {
public static void main(String[] args) throws Exception {
varArgsInt(1);
varArgsInt(2, 3);
varArgsInt(4, 5, 6);
varArgsString("A");
varArgsString("B", "C");
varArgsString("D", "E", "F");
printVarArgsInt(1);
printVarArgsInt(1, 2, 3);
printVarArgsString("A");
printVarArgsString("A", "B", "C");
varArgsLocation(1, "A", "B", "C");
varArgsAutoCloseable(
new FileInputStream(new File("D://text.txt")),
new OutputStreamWriter(new OutputStream() {
@Override
public void write(int b) throws IOException {
System.out.println("for test, do nothing!");
}
}));
}
private static void varArgsInt(int...numbers) {
for (int number : numbers) {
System.out.println("number:" + number);
}
}
private static void varArgsString(String...strings) {
for (String string : strings) {
System.out.println("string:" + string);
}
}
private static void printVarArgsInt(int...numbers) {
for (int number : numbers) {
System.out.println("print number:" + number);
}
}
private static void printVarArgsString(String...strings) {
for (String string : strings) {
System.out.println("print string:" + string);
}
}
private static void varArgsLocation(int number, String...strings) {
System.out.println("可变参数必须是入参的最后位置");
for (String string : strings) {
System.out.println("string location:" + string + "-" + number);
}
}
private static void varArgsAutoCloseable(AutoCloseable...autoCloseables) throws Exception {
for (AutoCloseable autoCloseable : autoCloseables) {
autoCloseable.close();
}
}
}