-
[Kotlin] Companion Object λ?Android/Kotlin 2021. 7. 5. 23:13λ°μν
- μ΄ κΈμ "μ€μ¬μ±μ Google 곡μ μΈμ΄ kotlin" κ°μλ₯Ό λ£κ³ 곡λΆν λ΄μ©μ μμ±νμμ΅λλ€.
Java Static
- ν΄λμ€ λ΄λΆμ λ©€λ² λ³μλ₯Ό μ¬μ©νκΈ° μν΄μλ ν΄λμ€λ₯Ό μμ±νκ³ μΈμ€ν΄μ€.λ³μμ ννλ‘ νΈμΆνμ¬ μ¬μ©ν μ μμ΅λλ€.
- μ¬λ¬ κ°μ μΈμ€ν΄μ€λ₯Ό λ§λ€ μ κ°κ° λ©€λ² λ³μκ° μ μ₯λ λ©λͺ¨λ¦¬λ₯Ό μ¬μ©νκ² λ©λλ€.
- νμ§λ§, λͺ¨λ μΈμ€ν΄μ€μμ 곡ν΅μ μΌλ‘ μ¬μ©νλ λ³μκ° μμ κ²½μ°μλ μ¬λ¬ κ°μ λ©λͺ¨λ¦¬λ₯Ό μ¬μ©νλ κ²μ λΉν¨μ¨μ μΌ μ μμ΅λλ€.
- λ°λΌμ μ΄λ₯Ό ν΄κ²°νκΈ° μν΄μλ static λ³μ, λ©μλλ₯Ό μ¬μ©νμ¬ ν΄λΉ ν΄λμ€μ λͺ¨λ μΈμ€ν΄μ€μμλ 곡ν΅μ μΌλ‘ μ¬μ©νκ² λ§λ€ μ μμ΅λλ€.
class Student { public String id; public String name; public static String national; public static void printInfo(){ System.out.printf("printInfo"); } } public class Main { public static void main(String[] args) { Student.national = "korea"; Student.printInfo(); } }
Static ν€μλκ° λΆμΈ λ³μ λλ λ©μλλ μ»΄νμΌ μ΄ν ν΄λμ€ λ‘λ© μμ μμ ν΄λμ€μ κ°μ΄ ν΄λμ€ λ³μλ λ©λͺ¨λ¦¬λ₯Ό μ°¨μ§νκ² λ©λλ€. Static λ³μλ λ©μλλ ν΄λμ€.λ³μ λ‘ μ¬μ©ν μ μμ΅λλ€.
Companion Objectλ?
- μλ°μ staticμ μμ κ³ kotlinμμλ Companion ObjectλΌλ λλ° κ°μ²΄λ₯Ό μ¬μ©νμ¬ μ μ λ©€λ²λ₯Ό μ μν©λλ€.
- λν, Companionμ μ΄λ¦μ μ€μ νμ¬ μ»€μ€ν ν Companion Objectλ₯Ό λ§λ€ μ μμ΅λλ€.
- μ°Έκ³ (https://www.bsidesoft.com/8187)
class Student{ var id: String? = null var name: String? = null companion object{ val national = "korea" fun printnational(){ println(national) } } } fun main(){ println(Student.Companion.national) Student.Companion.printnational() val comp = Student.Companion println(comp.national) comp.printnational() val comp2 = Student println(comp2.national) comp2.printnational() }
- μλ°μ staticκ³Όλ μ‘°κΈ μ°¨μ΄μ μ΄ μ‘΄μ¬νλλ° Companion Objectλ‘ κ°μ²΄μ΄λ€ 보λ λ³μμ ν λΉν μ μμ΅λλ€.
- νλμ ν΄λμ€μμλ νλμ Companion Objectλ§ μμ±ν μ μμ΅λλ€.
- Companion Object λ΄λΆμ λ³μλ ν΄λμ€ μμμ μ¬μ©ν μ μμ΅λλ€. κ·Έλ¬λ ν΄λμ€ λ©€λ² λ³μλ Companion Object μμμ μ¬μ©ν μ μμ΅λλ€. Companion Objectλ ν΄λμ€ λ‘λ©νλ©΄μ μμ±λμ§λ§, ν΄λμ€ λ©€λ²λ³μλ ν΄λμ€ μΈμ€ν΄μ€λ₯Ό μμ±ν λ μμ±λκΈ° λλ¬Έμ λ©€λ²λ³μλ₯Ό μ¬μ©ν μ μμ΅λλ€.
public final class Student { @Nullable private String id; @Nullable private String name; @NotNull private static final String national = "korea"; public static final Student.Companion Companion = new Student.Companion((DefaultConstructorMarker)null); @Nullable public final String getId() { return this.id; } public final void setId(@Nullable String var1) { this.id = var1; } @Nullable public final String getName() { return this.name; } public final void setName(@Nullable String var1) { this.name = var1; } public static final class Companion { @NotNull public final String getNational() { return Student.national; } public final void printnational() { String var1 = ((Student.Companion)this).getNational(); boolean var2 = false; System.out.println(var1); } private Companion() { } // $FF: synthetic method public Companion(DefaultConstructorMarker $constructor_marker) { this(); } } }
μλ°λ‘ Decompileν΄λ³΄λ©΄ Student ν΄λμ€ λ΄λΆμ staticμΌλ‘ Companion ν΄λμ€λ₯Ό μμ±νλ κ²μ νμΈν μ μμ΅λλ€. μ΄λ₯Ό ν΅ν΄ Companion κ°μ²΄λ ν΄λμ€κ° μμ±λ λ λ©λͺ¨λ¦¬μ μ μ¬λλ©΄μ λμμ μμ±νλ κ°μ²΄λΌλ κ²μ μ μ μμ΅λλ€.
λ°μν'Android > Kotlin' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[Kotlin] Array μ¬μ©λ² (0) 2021.08.12 [Kotlin] Functional Programming (0) 2021.08.11 [Kotlin] Generic, Inner ν΄λμ€ (0) 2021.07.07 [Kotlin] μ κ·Όμ νμ, property, get(), set() (0) 2021.07.05 [Kotlin] ν΄λμ€ μμ±κ³Ό μμ (0) 2021.07.04