item 53 incheol - JAVA-JIKIMI/EFFECTIVE-JAVA3 GitHub Wiki
Effective Java 3e μμ΄ν 53λ₯Ό μμ½ν λ΄μ© μ λλ€.
κ°λ³μΈμ(vargs) λ©μλλ λͺ μν νμ μ μΈμλ₯Ό 0κ° μ΄μ λ°μ μ μλ€. κ°λ³μΈμ λ©μλλ₯Ό νΈμΆνλ©΄, κ°μ₯ λ¨Όμ μΈμμ κ°μμ κΈΈμ΄κ° κ°μ λ°°μ΄μ λ§λ€κ³ μΈμλ€μ μ΄ λ°°μ΄μ μ μ₯νμ¬ κ°λ³μΈμ λ©μλμ 건λ€μ€λ€.
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;
}
- κ°μ₯ μ¬κ°ν λ¬Έμ λ μΈμλ₯Ό 0κ°λ§ λ£μ΄ νΈμΆνλ©΄ (μ»΄νμΌνμμ΄ μλ) λ°νμμ μ€ν¨νλ€λ μ μ΄λ€.
- μ½λλ μ§μ λΆνλ€.
λ€μ μ½λμ²λΌ 맀κ°λ³μλ₯Ό 2κ° λ°λλ‘ νλ©΄λλ€. μ¦, 첫 λ²μ§Έλ‘λ νλ²ν¨ 맀κ°λ³μλ₯Ό λ°κ³ , κ°λ³μΈμλ λ λ²μ§Έλ‘ λ°μΌλ©΄ μμμ λ¬Έμ κ° λ§μν μ¬λΌμ§λ€.
static int min(int firstArg, int... remainingArgs) {
int min = firstArg;
for (int arg : remainingArgs)
if (arg < min)
min = arg;
return min;
}
κ°λ³μΈμ λ©μλλ νΈμΆλ λλ§λ€ λ°°μ΄μ μλ‘ νλ ν λΉνκ³ μ΄κΈ°ννλ€. κ°λ³μΈμμ μ μ°μ±μ΄ νμν λ μ νν μ μλ λ©μ§ ν¨ν΄μ΄ μλ€. μλ₯Ό λ€μ΄ ν΄λΉ λ©μλ νΈμΆμ 95%κ° μΈμλ₯Ό 3κ° μ΄νλ‘ μ¬μ©νλ€κ³ ν΄λ³΄μ. κ·Έλ λ€λ©΄ λ€μμ²λΌ μΈμκ° 0κ°μΈ κ²λΆν° 4κ°μΈ κ²κΉμ§, μ΄ 5κ°λ₯Ό λ€μ€μ μνμ. λ§μ§λ§ λ€μ€μ μ λ©μλκ° μΈμ 4κ° μ΄μμΈ 5%μ νΈμΆμ λ΄λΉνλ κ²μ΄λ€.
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) { }
λ°λΌμ λ©μλ νΈμΆ μ€ λ¨ 5%λ§μ΄ λ°°μ΄μ μμ±νλ€.
EnumSetμ μ μ ν©ν°λ¦¬λ μ΄ κΈ°λ²μ μ¬μ©ν΄ μ΄κ±° νμ μ§ν© μμ± λΉμ©μ μ΅μννλ€. EnumSetμ λΉνΈ νλ(μμ΄ν 36)λ₯Ό λ체νλ©΄μ μ±λ₯κΉμ§ μ μ§ν΄μΌ νλ―λ‘ μμ£Ό μ μ νκ² νμ©ν μλΌ ν μ μλ€.
import java.util.*;
// μ½λ 36-2 EnumSet - λΉνΈ νλλ₯Ό λ체νλ νλμ κΈ°λ² (224μͺ½)
public class Text {
public enum Style {BOLD, ITALIC, UNDERLINE, STRIKETHROUGH}
// μ΄λ€ Setμ λ겨λ λλ, EnumSetμ΄ κ°μ₯ μ’λ€.
public void applyStyles(Set<Style> styles) {
System.out.printf("Applying styles %s to text%n",
Objects.requireNonNull(styles));
}
// μ¬μ© μ
public static void main(String[] args) {
Text text = new Text();
text.applyStyles(EnumSet.of(Style.BOLD, Style.ITALIC));
}
}
μΈμ κ°μκ° μΌμ νμ§ μμ λ©μλλ₯Ό μ μν΄μΌ νλ€λ©΄ κ°λ³μΈμκ° λ°λμ νμνλ€. λ©μλλ₯Ό μ μν λ νμ 맀κ°λ³μλ κ°λ³μΈμ μμ λκ³ , κ°λ³μΈμλ₯Ό μ¬μ©ν λλ μ±λ₯ λ¬Έμ κΉμ§ κ³ λ €νμ