Kotlin Object
코틀린에는 static 키워드가 없기 때문에 object 키워드를 활용하여 static을 대체할 수 있어야 함.
코틀린에서는 object로 static키워드를 바이트코드 변환시 best practice적인 방법으로 제공해줌 (Java로 디컴파일러 해보면 의도를 알 수 있음)
object 키워드는 static이 아닙니다
Overview
싱글턴 class 만들기
아래 코드는 학생들의 평균 점수를 구하는 메소드를 구현한 싱글턴 클래스 입니다.
object객체는 Java코드로 디컴파일시 class로 변환되므로 extends, implements를 구현할 수 있습니다.
object StudentManager {
val students = arrayListOf()
fun calculateAvg(): Unit {
for (student in students) {
...
}
}
}
object 키워드로 생성된 object에 접근하려면 object의 ‘이름.요소’로 접근하면 됩니다.
StudentManager.students.add(...);
StudentManager.calculateAvg();
static 메소드 만들기 companion object
static을 사용할 수 없는 대신 companion object로 top-level function을 만들 수 있습니다.
companion object는 private 맴버에는 접근 할 수 없습니다.
class Foo {
companion object {
fun bar(): Unit {
...
}
}
}
아래와 같이 호출 가능
Foo.bar();
companion object에 이름도 정할 수 있습니다.
class Foo {
companion object Name {
fun bar(): Unit {
...
}
}
}
// 둘 다 호출 가능
Foo.Name.bar();
Foo.bar();
익명객체 만들기
클릭 리스너가 onClick이벤트를 발생하였을 때 익명으로 생성 된 function이 실행되는 것을 확인할 수 있습니다.
interface ClickListener {
fun onClick()
}
fun main(args: Array) {
setClickAction(object: ClickListener {
override fun onClick() {
...
}
})
}
fun setClickAction(clickListener: ClickListener) {
clickListener.onClick()
}