μΈν°νμ΄μ€
λ μμ μ ꡬνν ν΄λμ€μ μΈμ€ν΄μ€λ₯Ό μ°Έμ‘°ν μ μλ νμ
μν μ νλ€. λ¬λ¦¬ λ§ν΄, ν΄λμ€κ° μ΄λ€ μΈν°νμ΄μ€λ₯Ό ꡬννλ€λ κ²μ μμ μ μΈμ€ν΄μ€λ‘ 무μμ ν μ μλμ§λ₯Ό ν΄λΌμ΄μΈνΈμ μκΈ°ν΄μ£Όλ κ²μ΄λ€. μΈν°νμ΄μ€λ μ΄μ κ°μ μ©λλ‘λ§ μ¬μ©ν΄μΌ νλ€.
μμ μΈν°νμ΄μ€λ λ©μλ μμ΄, μμλ₯Ό λ»νλ static final νλλ‘λ§ κ°λ μ°¬ μΈν°νμ΄μ€λ₯Ό λ§νλ€.
public interface PhysicalConstants {
// μ보κ°λλ‘ μ (1/λͺ°)
static final double AVOGADROS_NUMBER = 6.022_140_857e23;
// λ³ΌμΈ λ§ μμ (JAO
static final double BOLTZMW_CONSTANT = 1.380_648_52e-23;
// μ μ μ§λ (kg)
static final double ELECTRON_MASS = 9.109_383_56e-31;
}
μμ μΈν°νμ΄μ€ μν°ν¨ν΄μ μΈν°νμ΄μ€λ₯Ό μλͺ» μ¬μ©ν μλ€. ν΄λμ€ λ΄λΆμμ μ¬μ©νλ μμλ μΈλΆ μΈν°νμ΄μ€κ° μλλΌ λ΄λΆ ꡬνμ ν΄λΉνλ€. λ°λΌμ μμ μΈν°νμ΄μ€λ₯Ό ꡬννλ κ²μ μ΄ λ΄λΆ ꡬνμ ν΄λμ€μ APIλ‘ λ ΈμΆνλ νμλ€.
- μ¬μ©μμκ²λ μλ¬΄λ° μλ―Έκ° μλ€. μ€νλ € μ¬μ©μμκ² νΌλμ μ£ΌκΈ°λ νλ©°, λ μ¬νκ²λ ν΄λΌμ΄μΈνΈ μ½ λκ° λ΄λΆ ꡬνμ ν΄λΉνλ μ΄ μμλ€μ μ’ μλκ² νλ€.
- finalμ΄ μλ ν΄λμ€κ° μμ μΈν°νμ΄μ€λ₯Ό ꡬννλ€λ©΄ λͺ¨λ νμ ν΄λμ€μ μ΄λ¦κ³΅κ°μ΄ κ·Έ μΈν°νμ΄μ€κ° μ μν μμλ€λ‘ μ€μΌλμ΄ λ²λ¦°λ€.
μμλ₯Ό 곡κ°ν λλ κ·Έ μμκ° μ΄λμ μμΉν΄μΌ ν μ§ μ μ€ν κ²°μ ν΄μΌ νλ€. μμκ° νΉμ ν΄λμ€λ μΈν°νμ΄μ€μ κ°νκ² μ°κ΄λμ΄ μλ€λ©΄ κ·Έ ν΄λμ€λ μΈν°νμ΄μ€ λ΄λΆμ ν¬ν¨νλ κ²μ΄ μ μ νλ€. μλ₯Ό λ€μ΄, μλ°μ κΈ°λ³Έ νμ
λ°μ± ν΄λμ€μΈ Integer
μ Double
μλ κ°κ° μ΅μκ°κ³Ό μ΅λκ°μ λνλ΄λ μμ MIN_VALUE
, MAX_VALUE
κ° ν¬ν¨λμ΄ μλ€.
μμκ° λͺ κ°μ§ νμ λ κ° μ€ νλμΌ κ²½μ°, μ΄κ±°ν(enum)
μ μ¬μ©νμ¬ μμλ₯Ό λνλ΄λ κ²μ΄ μ’λ€. μλ₯Ό λ€μ΄, μμΌμ΄λ λ°©ν₯μ λνλΌ λ μ΄κ±° νμ
μΌλ‘ λνλ΄λ κ²μ΄ μ μ νλ€. μ΄κ±° νμ
μ κ°μ μ ν¨μ±μ 보μ₯νκ³ , νμ
μμ μ±μ μ 곡νλ€(μμ΄ν
34μμ λ€λ£Έ)
μ΄λ€ ν΄λμ€λ μΈν°νμ΄μ€μ μ§μ μ μΌλ‘ μ°κ΄λμ§ μμ μμλ μΈμ€ν΄μ€νν μ μλ μ νΈλ¦¬ν° ν΄λμ€μ λ΄μ 곡κ°νλ κ²μ΄ μ’λ€.
μ νΈλ¦¬ν° ν΄λμ€
λ μμλ μ μ λ©μλλ₯Ό μ 곡νλ ν΄λμ€μΈλ°, μ΄ ν΄λμ€λ μΈμ€ν΄μ€ννμ§ μλλ‘ μ€κ³λμ΄μΌ νλ€. μ΄λ₯Ό μν΄ private μμ±μλ₯Ό μΆκ°νμ¬ μΈλΆμμ κ°μ²΄λ₯Ό μμ±νμ§ λͺ»νκ² λ§λ λ€.
package effectivejava.chapter4.item22.constantutilityclass;
public class PhysicalConstants {
private PhysicalConstants() { } // μΈμ€ν΄μ€ν λ°©μ§
// μ보κ°λλ‘ μ (1/λͺ°)
public static final double AVOGADROS_NUMBER = 6.022_140_857e23;
// λ³ΌμΈ λ§ μμ (J/K)
public static final double BOLTZMANN_CONSTANT = 1.380_648_52e-23;
// μ μ μ§λ (kg)
public static final double ELECTRON_MASS = 9.109_383_56e-31;
}
μ΄ μ½λλ 물리 μμλ₯Ό λ΄μ μ νΈλ¦¬ν° ν΄λμ€λ₯Ό μ μν μμμ΄λ€. κ° μμλ public static final
λ‘ μ μΈλμ΄ μμΌλ©°, μΈλΆμμ κ°μ²΄λ₯Ό μμ±ν μ μλλ‘ private μμ±μκ° μΆκ°λμ΄ μλ€.
μ νΈλ¦¬ν° ν΄λμ€μ μ μλ μμλ₯Ό λΉλ²ν μ¬μ©νλ κ²½μ° μ μ μν¬νΈλ₯Ό νμ©ν΄ ν΄λμ€ μ΄λ¦μ μλ΅νκ³ μμ μ΄λ¦λ§ μ¬μ©ν μ μλ€. μ μ μν¬νΈλ₯Ό μ¬μ©νλ©΄ μ½λκ° κ°κ²°ν΄μ§μ§λ§, λ¨μ©νλ©΄ μ½λμ κ°λ μ±μ λ¨μ΄λ¨λ¦΄ μ μμΌλ―λ‘ νμν κ²½μ°μλ§ μ¬μ©νλ κ²μ΄ μ’λ€.
import static effectivejava.chapter4.item22.constantutilityclass.PhysicalConstants.*;
public class Test {
double atoms(double mols) {
return AVOGADROS_NUMBER * mols;
}
}
μ΄ μμλ PhysicalConstants
ν΄λμ€μμ μμλ₯Ό κ°μ Έμ μ¬μ©νλ μμ΄λ€. μ μ μν¬νΈλ₯Ό μ¬μ©νκΈ° λλ¬Έμ AVOGADROS_NUMBER
λ₯Ό ν΄λμ€ μ΄λ¦ μμ΄ μ§μ μ¬μ©ν μ μλ€.
- μμλ₯Ό 곡κ°ν λλ μ°κ΄λ ν΄λμ€λ μΈν°νμ΄μ€ λ΄λΆμ ν¬ν¨νκ±°λ, κ·Έλ μ§ μλ€λ©΄ μΈμ€ν΄μ€νν μ μλ μ νΈλ¦¬ν° ν΄λμ€μ λ΄μμΌ νλ€.
- μμκ° νμ λ κ°μ μ§ν©μ΄λΌλ©΄ μ΄κ±° νμ (enum)μΌλ‘ μ μνλ κ²μ΄ μ μ νλ€.
- μμκ° μμ£Ό μ¬μ©λλ€λ©΄ μ μ μν¬νΈ(static import)λ₯Ό ν΅ν΄ κ°νΈνκ² μ¬μ©ν μ μμ§λ§, κ³Όλνκ² μ¬μ©νμ§ μλλ‘ μ£Όμν΄μΌ νλ€.
- μμλ
public static final
λ‘ μ μΈν΄ λΆλ³μ±μ 보μ₯νκ³ , μ νΈλ¦¬ν° ν΄λμ€λ private μμ±μλ‘ μΈμ€ν΄μ€νλ₯Ό λ°©μ§νλ€.
{% hint style="success" %} μΈν°νμ΄μ€λ νμ μ μ μνλ μ©λλ‘λ§ μ¬μ©ν΄μΌ νλ€. μμ 곡κ°μ© μλ¨μΌλ‘ μ¬μ©νμ§ λ§μ. {% endhint %}