item 34 Jung inchul - JAVA-JIKIMI/EFFECTIVE-JAVA3 GitHub Wiki
Effective Java 3e μμ΄ν 34λ₯Ό μμ½ν λ΄μ© μ λλ€.
public static final int APPLE_FUJI = 0;
public static final int APPLE_PIPPIN = 1;
public static final int APPLE_GRANNY_SMITH = 2;
public static final int ORANGE_NAVEL = 0;
public static final int ORANGE_TEMPLE = 1;
public static final int ORANGE_BLOOD = 2;
μ μ μ΄κ±° ν¨ν΄ κΈ°λ²μλ λ¨μ μ΄ λ§λ€.
νμ μμ μ 보μ₯ν λ°©λ²μ΄ μμΌλ©°ννλ ₯λ μ’μ§ μλ€. μ€λ μ§λ₯Ό 건λ€μΌ ν λ©μλμ μ¬κ³Όλ₯Ό 보λ΄κ³λλ± μ°μ°μλ‘ λΉκ΅νλλΌλ μ»΄νμΌλ¬λ μλ¬΄λ° κ²½κ³ λ©μμ§λ₯Ό μΆλ ₯νμ§ μλλ€.- μμμ κ°μ΄ λ°λλ©΄ ν΄λΌμ΄μΈνΈλ λ°λμ λ€μ
μ»΄νμΌν΄μΌ νλ€. λ€μ μ»΄νμΌνμ§ μμ ν΄λΌμ΄μΈνΈλ μ€νμ΄ λλλΌλ μλ±νκ² λμν κ²μ΄λ€. - μ μ μμλ
λ¬Έμμ΄λ‘ μΆλ ₯νκΈ°κ° λ€μ κΉλ€λ‘λ€. μ¬μ§μ΄ κ·Έ μμ μμκ° λͺ κ° μΈμ§λ μ μ μλ€. - μ μ λμ λ¬Έμμ΄ μμλ₯Ό μ¬μ©νλ λ³ννλ ν¨ν΄λ μμ§λ§, μμμ μλ―Έλ₯Ό μΆλ ₯ν μ μλ€λ μ μ μ’μ§λ§
λ¬Έμμ΄ μμμ μ΄λ¦ λμλ¬Έμμ΄κ°μ κ·Έλλ‘ μ¬μ©νλ©΄ μ€νκ° μμ΄λ μ»΄νμΌλ¬λ νμΈν κΈΈμ΄ μμΌλ μμ°μ€λ½κ²λ°νμ λ²κ·Έκ° μκΈ΄λ€.
μ΄κ±° νμ μ μ°λ©΄ μ΄λ€ λΆλΆμ΄ μ₯μ μ΄ μμκΉ
-
μ΄κ±° νμ μ체λ
ν΄λμ€μ΄λ©°, μμ νλλΉμμ μ μΈμ€ν΄μ€λ₯Ό νλμ© λ§λ€μ΄public static finalνλλ‘ κ³΅κ°νλ€. μ΄κ±° νμ μ λ°μμ μ κ·Όν μ μλ μμ±μλ₯Ό μ 곡νμ§ μμΌλ―λ‘ μ¬μ€μfinalμ΄λ€. -
μ΄κ±° νμ μ
μ»΄νμΌ νμ νμ μμ μ±μ μ 곡νλ€. -
μ΄κ±° νμ μλ
κ°μμ μ΄λ¦ 곡κ°μ΄ μμ΄μ μ΄λ¦μ΄ κ°μ μμλ ννλ‘κ² κ³΅μ‘΄νλ€. -
μ΄κ±° νμ μ μλ‘μ΄ μμλ₯Ό μΆκ°νκ±°λ μμλ₯Ό λ°κΏλ λ€μ
μ»΄νμΌνμ§ μμλ λλ€. -
μ΄κ±° νμ μλ
μμμ λ©μλλ νλλ₯Ό μΆκ°ν μ μκ³μμμ μΈν°νμ΄μ€λ₯Ό ꡬννκ² ν μλ μλ€. -
μ΄κ±° νμ μ μμ μμ μ μλ μμ λ€μ κ°μ λ°°μ΄μ λ΄μ λ°ννλ μ μ λ©μλμΈ
valuesλ₯Ό μ 곡νλ€.public class WeightTable { public static void main(String[] args) { double eartchWeight = Double.parseDouble(args[0]); double mass = earchWeight / Planet.EARTH.surfaceGravity(); for (Planet p : Planet.values()) System.out.printf("%sμμμ 무κ²λ %fμ΄λ€.\n",p,p.surfaceWeight(mass)); } } -
μ΄κ±° νμ μ
μμλ³ λ©μλ ꡬνλ κ°λ₯νλ€.public enum Operation { PLUS("+") { public double apply(double x, double y) { return x + y; } }, MINUS("-") { public double apply(double x, double y) { return x - y; } ... }public static void main(String[] args) { double x = Double.parseDouble(args[0]); double y = Double.parseDouble(args[1]); for (Operation op : Operation.values()) System.out.printf("%f %s %f = %f\n", x, op, y, op.apply(x,y)); } -
νμ§λ§ κΈ°μ‘΄ μ΄κ±° νμ μ μμλ³ λμμ νΌν©ν΄ λ£μ λλ
switchλ¬Έμ΄ μ’μ μ νμ΄ λ μ μλ€.public static Operation inverse(Operation op) { switch(op) { case PLUS: return Operation.MINUS; case MINUS: return Operation.PLUS; case TIMES: return Operation.DIVIDE; case DIVIDE: return Operation.TIMES; default: throw new AssertionError("μ μ μλ μ°μ° : "+ op); } }
μ΄κ±° νμ μμ μμλ₯Ό νλ μ κ±°νλ©΄ μ΄λ»κ² λμ§?
μ κ±°ν μμλ₯Ό μ°Έμ‘°νμ§ μλ ν΄λΌμ΄μΈνΈμλ μ무 μν₯μ΄ μλ€. ν΄λΌμ΄μΈνΈλ₯Ό λ€μ μ»΄νμΌνμ§ μμΌλ©΄ λ°νμμ μμ κ°μ μ€μμ μ μ©ν μμΈκ° λ°μν κ²μ΄λ€.
μ 리
μ΄κ±° νμ
μ νμ€ν μ μ μμλ³΄λ€ λ°μ΄λλ€. λ μ½κΈ° μ½κ³ μμ νκ³ κ°λ ₯νλ€. λλ€μ μ΄κ±° νμ
μ΄ λͺ
μμ μμ±μλ λ©μλ μμ΄ μ°μ΄μ§λ§, κ° μμλ₯Ό νΉμ λ°μ΄ν°μ μ°κ²°λκ±°λ μμ λ§λ€ λ€λ₯΄κ² λμνκ² ν λλ νμνλ€. λλ¬Όκ²λ νλμ λ©μλκ° μμλ³λ‘ λ€λ₯΄κ² λμν΄μΌ ν λλ μλ€. μ΄λ° μ΄κ±° νμ
μμλ switch λ¬Έ λμ μμλ³ λ©μλ ꡬνμ μ¬μ©νμ.