Varargs in Java: Variable-Argument Methods

Varargs (...) lets a method accept zero or more arguments of the same type.

Real-World Use Cases

  • utility logging methods
  • SQL/criteria builders
  • event publishing with optional metadata

Java 8 Example

public static int sum(int... values) {
    int total = 0;
    for (int value : values) {
        total += value;
    }
    return total;
}

Java 21+ Example

public static String joinWithPrefix(String prefix, String... parts) {
    return prefix + String.join(",", parts);
}

Varargs behavior is unchanged across Java 8, JDK 11, Java 17, Java 21, and Java 25. Improvements in newer versions are around surrounding language features, not varargs itself.

Rules

  • only one varargs parameter allowed
  • varargs must be last parameter
  • internally treated as array

Key Takeaways

  • Varargs improves API ergonomics for optional lists of inputs.
  • Avoid ambiguous overloads with boxed/primitive varargs combinations.
  • Prefer explicit overloads when readability is more important than flexibility.