item 53 JungHyunLyoo - JAVA-JIKIMI/EFFECTIVE-JAVA3 GitHub Wiki
κ°λ³μΈμ(varargs) λ©μλ
λͺ μν λ§€κ°λ³μ νμ μ μΈμλ₯Ό 0κ° μ΄μ λ°μ μ μλ λ©μλ.
κ°λ³μΈμ λ©μλλ₯Ό νΈμΆνλ©΄, κ°μ₯ λ¨Όμ μΈμμ κ°μμ κΈΈμ΄κ° κ°μ λ°°μ΄μ λ§λ€κ³
μΈμλ€μ μ΄ λ°°μ΄μ μ μ₯νλ€. κ°λ³μΈμ λ©μλ μμμ μ΄ λ°°μ΄μ μ¬μ©νλ©΄ λλ€.
κ°λ³μΈμ νμ© μ
static int sum(int... args) {
int sum = 0;
for (int arg : args)
sum += arg;
return sum;
}
/*
* μ€ν μ
* sum() -> 0
* sum(1,2,3) -> 6
*/
μλͺ»λ κ°λ³μΈμ νμ© μ (μΈμκ° 1κ° μ΄μμ΄μ΄μΌ νλ κ°λ³μΈμ λ©μλ)
static int min(int... args) {
if (args.length == 0)
throw new IllegalArgumentException("μΈμκ° 1κ° μ΄μ νμν©λλ€.");
int min = args[0];
for (int i = 1; i < args.length; i++)
if (args[i] < min)
min = args[i];
return min;
}
μ λ©μλλ 4κ°μ§ λ¬Έμ λ₯Ό κ°μ§κ³ μλ€.
- μΈμλ₯Ό 0κ°λ§ λ£μ΄ νΈμΆνλ©΄ λ°νμμ μ€ν¨νλ€. (μ»΄νμΌνμμμ κ²μ¦ λΆκ°)
- μ½λκ° μ§μ λΆνλ€.
- args μ ν¨μ± κ²μ¬λ₯Ό λͺ μμ μΌλ‘ ν΄μΌ νλ€.
- minμ μ΄κΉκ°μ Integer.MAX_VALUEλ‘ μ€μ νμ§ μκ³ λ for-eachλ¬Έμ μ¬μ©ν μ μλ€.
μλμ κ°μ λ μ½λλ₯Ό 보μ
μ¬λ°λ₯Έ κ°λ³μΈμ νμ© μ (μΈμκ° 1κ° μ΄μμ΄μ΄μΌ νλ κ°λ³μΈμ λ©μλ)
static int min(int firstArg, int... remainingArgs) {
int min = firstArg;
for (int arg : remainingArgs)
if (arg < min)
min = arg;
return min;
}
4κ°μ§ λ¬Έμ κ° λͺ¨λ ν΄κ²°λλ€!
- λ°νμ μ€ν¨ μ κ±°.
- μλμ μΌλ‘ μ½λ κΉλ.
- args μ ν¨μ± κ²μ¬κ° μ κ±°.
- minκ°μ 첫λ²μ§Έ λ§€κ°λ³μλ₯Ό ν΅ν΄μ κ°μ λ‘ μ€μ νμ¬ μμ°μ€λ½κ² for-eachλ¬Έ νμ© κ°λ₯.
κΈ°ν κ°λ³μΈμ λ©μλμ νμ© (printf)
- public PrintStream printf(String format, Object ... args)
- public PrintStream printf(Locale l, String format, Object ... args)
κ°λ³μΈμ λ©μλ μ¬μ©μ μ£Όμμ
κ°λ³μΈμ λ©μλλ νΈμΆλ λλ§λ€ λ°°μ΄μ μλ‘ νλ ν λΉνκ³ μ΄κΈ°νν¨.
λλ¬Έμ μ±λ₯μ μ΄μκ° μκΈΈ μ μλ€.
μ΄λ₯Ό μ΄λ μ λ 보μν΄μ€ μ μλ ν¨ν΄μ΄ μλ€.
λ°λ‘ κ°λ³μΈμλ‘ μ λ ₯λλ κ²½μ°λ₯Ό λΆλ₯νμ¬, λμ νλ₯ μ κ²½μ°μλ μΌλ° λ©μλλ‘ μ§μ νλ ν¨ν΄μ΄λ€.
public void foo() { }
public void foo(int a1) { }
public void foo(int a1, int a2) { }
public void foo(int a1, int a2, int a3) { }
public void foo(int a1, int a2, int a3, int... rest) { }
μ¬λ μ±λ₯ μ΅μ νμ λ§μ°¬κ°μ§λ‘ μ΄ κΈ°λ²λ λ³΄ν΅ λλ λ³ μ΄λμ΄ μμ§λ§, νΉμν μν©μμ λΉμ λ°ν κ²!