Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
31 |
Tags
- 안드로이드
- AsyncListDiffer
- appcompatacitivity
- 자이고트
- 플로이드워셜
- apk 빌드 과정
- viewModelScope
- GetX
- 디자인 패턴
- 데코레이터 패턴
- 상태관리
- http 역사
- appcompatactivity
- 리사이클러뷰풀
- recyclerview
- DiffUtil
- http발전과정
- 운영체제
- Kotlin
- 리사이클러뷰
- Dispatchers
- 물리 메모리
- Android
- 절대 주소
- 뷰홀더
- NestedScrollView
- 내부 단편화
- 프로세스
- flutter
- AAC
Archives
- Today
- Total
hong's android
[코틀린] object 키워드 본문
적은 수정을 해야 되는 경우에도 새로운 클래스를 만들고 객체를 생성하는 것은 비 효율적이다.
클래스 선언과 객체 생성을 동시에 가능하다.
1. 객체 식 (Object expressions)
window.addMouseListener(object : MouseAdapter() {
override fun mouseClicked(e: MouseEvent) { /*...*/ }
override fun mouseEntered(e: MouseEvent) { /*...*/ }
})
추상 클래스나 인터페이스를 구현해서 클래스를 따로 정의하지 않고 사용할 수 있다.
즉, 익명 클래스를 만들 수 있다.
class C {
private fun getObject() = object {
val x: String = "x"
}
fun printX() {
println(getObject().x)
}
}
해당 객체를 변수에 저장하거나 리턴으로 선언할 수 있다.
사용한 곳에서 즉시 객체 초기화와 실행이 된다.
2.객체 선언(Object Declaration)
객체 선언을 통해 간단하게 싱글톤 패턴을 구현할 수 있다.
object DataProviderManager {
fun registerDataProvider(provider: DataProvider) {
// ...
}
val allDataProviders: Collection<DataProvider>
get() = // ...
}
DataProviderManager.registerDataProvider(...)
아무것도 상속받지 않으면 object는 Any 타입을 상속받는다.
처음 object에 접근할때 초기화된다.
2.1 동반 객체 (Companion objects)
코틀린엔 static이 없다 그 대신 동반 객체를 사용할 수 있다.
class MyClass {
companion object Factory {
fun create(): MyClass = MyClass()
}
}
val instance = MyClass.create()
companion object의 이름은 생략하고 호출 가능하다.
companion object는 해당 클래스가 메모리에 올라가면 초기화된다.
Reference.
https://kotlinlang.org/docs/object-declarations.html
'Develop > Kotlin' 카테고리의 다른 글
[Kotlin] 상속과 위임 (0) | 2023.02.21 |
---|---|
[Kotlin] 코틀린 인 액션 2장 (0) | 2023.01.16 |
[Kotlin] 코틀린 인 액션 1장 (0) | 2023.01.16 |