π [Kotlin] object ν€μλ
- object ν€μλμλ
Object expression(κ°μ²΄ ννμ)
κ³ΌObject declaration(κ°μ²΄ μ μΈ)
μ΄λΌλ κ°λ μ΄ μ‘΄μ¬νλ€. - μΌλΆ ν΄λμ€λ₯Ό μ½κ° μμ ν κ°μ²΄λ₯Ό λ§λ€μ΄μΌν λ μλ‘μ΄ νμ ν΄λμ€λ₯Ό λ§λλ κ² λ³΄λ€ λ«λ€κ³ νλ¨λ λ μ¬μ©ν μ μλ€.
π’ Object expressions (κ°μ²΄ ννμ)
κ°μ²΄ ννμ
μ μ΄λ¦μ΄ μ ν΄μ§μ§ μμμ΅λͺ ν΄λμ€
λ₯Ό λ§λ€ λ μ¬μ©νλ€.μ΅λͺ ν΄λμ€
λ μ΄λ¦μ΄ μ ν΄μ§μ§ μμλ€λ λ»μΌλ‘ ν΄λμ€λͺ μ΄ μλ€.μ΅λͺ ν΄λμ€
μ΄λ―λ‘ ν΄λμ€λ₯Ό μ μΈν¨κ³Ό λμμ κ°μ²΄κ° μμ±λλ€.1 2 3 4 5 6 7 8 9 10
val helloWorld = object { val hello = "Hello" val world = "World" override fun toString() = "$hello $world" } fun main() { println(helloWorld) }
μ μ½λμμ
object
λ€μμ{
λΆν°}
κΉμ§κ° μ΅λͺ ν΄λμ€κ° λλ€.
μ΄λ°
μ΅λͺ ν΄λμ€
λ€μ μΌνμ±μΌλ‘ μ¬μ©ν νμκ° μμ λ μ μ©νλ€.- μ²μλΆν° μ΅λͺ
ν΄λμ€λ₯Ό ꡬννκ±°λ κΈ°μ‘΄ ν΄λμ€λ μΈν°νμ΄μ€λ₯Ό μμλ°μ ꡬνν μ μλ€.
- μ μ½λλ μ²μλΆν° μ΅λͺ ν΄λμ€λ₯Ό ꡬνν μ½λμ΄λ€.
- μ΅λͺ
ν΄λμ€μ μΈμ€ν΄μ€λ ννμμ΄κΈ° λλ¬Έμ
μ΅λͺ κ°μ²΄
λΌκ³ λ νλ€.
π’ μ²μλΆν° μ΅λͺ ν΄λμ€ κ΅¬ν
μ²μλΆν° κ°μ²΄ ννμμ μ΄μ©ν μ΅λͺ ν΄λμ€λ₯Ό ꡬννκ² λλ©΄ νμ μ΄ μ μΈλμ΄μμ§ μκΈ° λλ¬Έμ
Any
λ‘ μ·¨κΈλλ€.λ°λΌμ μλμ κ°μ μ½λλ κ²°κ΅
Any
ν΄λμ€μμtest
λΌλ λ©μλκ° μκΈ° λλ¬Έμ μλ¬κ° λ°μνκ² λλ€.1 2 3 4 5 6 7
val helloWorld = object { fun test() = println("test") } fun main() { helloWorld.test() // μλ¬λ°μ }
μ¬μ©μκ° μ μν λ©μλλ μμ±μ μ κ·Όνλ €λ©΄ μλμ κ°μ΄
private
λlocal
μμ μ¬μ©μ΄ κ°λ₯νλ€.1 2 3 4 5 6 7 8 9 10 11 12
private val helloWorld2 = object { fun test() = println("helloWorld2") } fun main() { val helloWorld3 = object { fun test() = println("helloWorld3") } println(helloWorld2.test()) // μ κ·Όκ°λ₯ println(helloWorld3.test()) // μ κ·Όκ°λ₯ }
μ 2λ²μ μ¬μ©μκ° μ μν λ©μλλ μμ±μ μ κ·Όμ΄ κ°λ₯νμ§λ μ λͺ¨λ₯΄κ² λ€..
π’ μμμ μ΄μ©ν μ΅λͺ ν΄λμ€ κ΅¬ν
κΈ°μ‘΄μ ꡬνλ ν΄λμ€λ μΈν°νμ΄μ€λ₯Ό μμλ°μ μ΅λͺ ν΄λμ€λ‘ ꡬνν μ μλ€.
1 2 3 4 5
window.addMouseListener(object : MouseAdapter() { override fun mouseClicked(e: MouseEvent) { /*...*/ } override fun mouseEntered(e: MouseEvent) { /*...*/ } })
π’ Object declarations (κ°μ²΄ μ μΈ)
- μ±κΈν€(Singleton) ν¨ν΄μ μ¬μ©ν λ μ΄μ©ν μ μλ κΈ°λ₯μ€μ νλμ΄λ€.
- μ±κΈν€μ΄λ νλ‘κ·Έλ¨μ΄ μ€ν λμ€μ
μμ±λλ κ°μ²΄λ λ¨ νλ
λΌλ μ
1 2 3 4 5 6 7 8
object DataProviderManager { fun registerDataProvider(provider: DataProvider) { // ... } val allDataProviders: Collection<DataProvider> get() = // ... }
- μ±κΈν€μ΄λ νλ‘κ·Έλ¨μ΄ μ€ν λμ€μ
λ€μκ³Ό κ°μ΄ μ¬μ©ν μ μλ€.
1
DataProviderManager.registerDataProvider(...)
μΆμ²
- https://kotlinlang.org/docs/object-declarations.html#object-expressions
Comments powered by Disqus.