item 22 JihoonKim - JAVA-JIKIMI/EFFECTIVE-JAVA3 GitHub Wiki
- μμ μ ꡬνν ν΄λμ€μ instanceλ₯Ό μ°Έμ‘°ν μ μλ νμ μν
- 'ν΄λμ€κ° μ΄λ€ μΈν°νμ΄μ€λ₯Ό ꡬννλ€λ κ²'μ 'μμ μ instanceλ‘ λ ν μ μλμ§μ λν΄ ν΄λμ€κ° ν΄λΌμ΄μΈνΈμ μκΈ°ν΄μ£Όλ κ²'
- λ©μλ μμ΄, static final νλλ‘λ§ μ΄λ£¨μ΄μ§ μΈν°νμ΄μ€
- μ κ·νλ μ΄λ¦(qualified name)μ νΌνκ³ μ ꡬννκ³€ ν¨
public interface PhysicalConstants {
static final double AVOGADROS_NUMBER = 6.022_140_857e23; // [1], [2]
static final double BOLTZMANN_CONSTANT = 1.380_648_52e-23;
static final double ELECTRON_MASS = 9.109_383_56e-31;
}
[1] : interfaceμ fieldλ public static finalμ΄ defaultμ΄λ€. (JLS-9)
[2] : μ«μ μ¬μ΄μ λ°μ€('_')μ μλ¬΄λ° μν₯μ μ£Όμ§ μκ³ κ°λ
μ±μ λμΈλ€.
- java 7μ μΆκ°
- μ«μ λμ μ¬μ© λΆκ°
- guide λ¬Έμ
- ν΄λμ€ λ΄λΆμμ μ¬μ©νλ μμ : λ΄λΆ ꡬνμ ν΄λΉνκΈ°μ μμ μΈν°νμ΄μ€λ λ΄λΆ ꡬνμ ν΄λμ€μ APIλ‘ λ ΈμΆνλ νμ
- λ°μ΄λ리 νΈνμ±1μ μν΄ μ μ°λλΌλ μμλ₯Ό κ³μ ꡬννκ³ μμ΄μΌ νλ€.
- finalμ΄ μλ ν΄λμ€κ° μμ μΈν°νμ΄μ€λ₯Ό ꡬννλ€λ©΄ λͺ¨λ νμ ν΄λμ€μ μ΄λ¦κ³΅κ°μ΄ κ·Έ μΈν°νμ΄μ€κ° μ μν μμλ€λ‘ μ€μΌλμ΄ λ²λ¦°λ€.
- νΉμ ν΄λμ€λ μΈν°νμ΄μ€μ κ°νκ² μ°κ΄λ μμλΌλ©΄ κ·Έ ν΄λμ€λ μΈν°νμ΄μ€ μ체μ μΆκ°
- ex> Integerμ Doubleμ MIN_VALUE, MAX_VALUE
- μ΄κ±° νμ (item34)
- μΈμ€ν΄μ€νν μ μλ μ νΈλ¦¬ν° ν΄λμ€(item4)
import package effectivejava.chapter4.item22.constantutilityclass.PhysicalConstants.*; // [1]
// package effectivejava.chapter4.item22.constantutilityclass;
public class PhysicalConstants {
private PyysicalConstants(){} // μΈμ€ν΄μ€ν λ°©μ§
public static final double AVOGADROS_NUMBER = 6.022_140_857e23;
public static final double BOLTZMANN_CONSTANT = 1.380_648_52e-23;
public static final double ELECTRON_MASS = 9.109_383_56e-31;
}
[1] : μ μ μν¬νΈ(static import)λ₯Ό ν΅ν ν΄λμ€ μ΄λ¦ μλ΅ κ°λ₯
(PhysicalConstants.AVOGADROS_NUMBER -> AVOGADROS_NUMBER)
μΈν°νμ΄μ€λ νμ μ μ μνλ μ©λλ‘λ§ μ¬μ©ν΄μΌ νλ€. μμ 곡κ°μ© μλ¨μΌλ‘ μ¬μ©νμ§ λ§μ.
- λ°μ΄λ리 νΈνμ±(binary compatibility)
- ν΄λμ€μ λ΄μ©μ λ³κ²½ν΄λ, μ¬μ©νλ μͺ½μμ recompileμ ν νμκ° μλ κ²μ΄λ€.
- ex> public, protected λ©μλμ μμ λλ renameμ νλ©΄ λ°μ΄λ리 νΈνμ±μ΄ κΉ¨μ§λ€.
- λ°μ΄λ리 νΈνμ±μ κΉ¨μ§ μκ³ ν΄λμ€μ λ©€λ²(νλ, λ©μλ)μ μμ νΉμ μ΄λ¦ λ³κ²½μ΄ κ°λ₯ν μ΄μ λ μΈλΆμμ μ¬μ©ν μ μλ κ²λ€μ΄κΈ° λλ¬Έ
- JLS-13
- stackoverflow - λ°μ΄λ리 νΈνμ±
- 'μ κ·νλ μ΄λ¦μ νΌνλ€'μ μλ―Έ
- λμΌν μ΄λ¦μ λ©μλκ° μ¬λ¬ κ° μμ λ, λ¨ νλμ λ©μλλ§μ μ ννκΈ° μν΄ λ©μλ μμ λΆκ°μ μΌλ‘ class μ΄λ¦μ μ λκ±°?
- λ°μ΄λ리 νΈνμ±μμ recompileμ λν΄ μΈκΈνκ³ μλλ°, .class νμΌμ μλ―Έ?