Initializer Blocks
About
Javaμμ μμ±μλ μ¬λ°λ₯Έ κ°μ²΄ μΈμ€ν΄μ€λ₯Ό μμ±νλ μν μ νλ€. μμ±μμμ validationμ μ μ©νκΈ°λ νλ€.
μ½νλ¦°μμλ μ΄λ¬ν validation λ‘μ§μ init λΈλ‘μμ μ²λ¦¬ν μ μλ€. μ½νλ¦°μμ μ£Όμμ±μ(primary constructor)μλ μ½λλ₯Ό λ£μ μ μκΈ° λλ¬Έμ, νμνλ€λ©΄ init λΈλ‘μμ μ΄κΈ°ν λ‘μ§ μ½λλ₯Ό μΆκ°ν μ μλ€.
init λΈλ‘μ μ΄λμ λ£λμ§μ λ°λΌ μ€ν μμκ° λ¬λΌμ§λ©°, top-downμΌλ‘ μμ°¨μ μΌλ‘ μ€νλλ€.
λν, init λΈλ‘μ μ¬λ¬ κ° κ°μ§ μ μλ€. κ·Έλ°λ° κ΅³μ΄ μ΄λ κ² μ¬λ¬ κ°λ₯Ό λ£μ΄μΌ ν μ΄μ κ° μμκΉ?
Multiple Initializer Blocks
Stack Overflowμ λμ¨ μμ λ₯Ό μ‘°κΈ λ³νν΄λ΄€λ€.
λ΅λ³μλ μ£Όμμ±μμμλ λ‘μ§μ λ£μ μ μμΌλ―λ‘, μ¬λ¬ κ°μ init λΈλ‘μ μ΄μ©νλ©΄ μ΄κΈ°ν λ¨κ³μμ νλ‘νΌν° λ±μ μμ‘΄μ±μ μ²λ¦¬ν μ μλ€κ³ νλ€. (νΉν νλ‘νΌν°κ° μ½κΈ° μ μ© val
μΌ λ)
νλμ init λΈλ‘μΌλ‘λ μΆ©λΆν κ°λ₯νμ§λ§, κ·Έλ κ² νλ©΄ μ½κΈ°μ μ© νλ‘νΌν°μ μ μΈκ³Ό μ΄κΈ°νλ₯Ό λΆλ¦¬νκ² λλ€κ³ νλ€. λ°λ©΄, μ¬λ¬ κ°μ init λΈλ‘μ μ΄μ©νλ©΄ μ μΈκ³Ό μ΄κΈ°ν, κ·Έλ¦¬κ³ νμν κ³μ°μ μ΄κΈ°νμ λ£μ μ μμ΄μ μ½λκ° λ cleanνκ³ , κ°λ μ±μ΄ λμμ§λ€κ³ νλ€.
λ΄κ° 보기μλ κ·Έλ₯ μ¬λ¬ κ°μ λ‘μ§μ΄ μλλΌλ νλμ init λΈλ‘μ λ£μ΄λ λ κ² κ°λ€κ³ μκ°νλ€. μ€νλ € {}
λ‘ μ΄κΈ°ν λΆλΆμ κ°μΈλ κ²λ³΄λ€ κ°λ
μ±μ΄ μ¬λΌκ° κ² κ°λ€κ³ μκ°νλ€. (μ¬μ€ μ¬μ ν κ°λ
μ±μ νλμ init λΈλ‘μ΄ λ μ’λ€κ³ μκ°νλ€.)
μν©μ λ°λΌ λ€λ₯΄κ² μ§λ§ init λΈλ‘μ μ΄λ° μμΌλ‘ μ¬λ¬ κ° λ¬ μλ μμ κ±°λΌκ³ μκ°νλ€. μμ±κ³Ό init λΈλ‘μ΄ μ€κ° μ€κ° μμ¬ μμ΄μ 보기μ κ·Έλ κ² μ’μ보μ΄μ§ μμ§λ§ λ§μ΄λ€.
κ°κΈμ init λΈλ‘μ 1κ°λ§ λ§λ€κ³ , κ°λ₯νλ€λ©΄ 1κ°λ λ§λ€μ§ μλ κ²μ΄ μ’λ€κ³ νλ€. μμ±μμμ μ΅λν μλ¬΄λ° μμ λ μνλ κ²μ΄ νλ‘κ·Έλ¨μ μμ μ±κ³Ό νΌν¬λ¨Όμ€ μΈ‘λ©΄μμ λͺ¨λ λ μ₯μ μ΄ ν¬λ€κ³ νλ€. <λ€μ¬λ€λ₯ μ½νλ¦° νλ‘κ·Έλλ°>(μμ§λ·μ»΄, 2021)
REF
Last updated