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
- flutter
- 물리 메모리
- 리사이클러뷰풀
- appcompatacitivity
- AAC
- http 역사
- AsyncListDiffer
- viewModelScope
- 자이고트
- recyclerview
- 상태관리
- 내부 단편화
- Kotlin
- 프로세스
- NestedScrollView
- GetX
- 절대 주소
- 디자인 패턴
- 리사이클러뷰
- apk 빌드 과정
- 운영체제
- 뷰홀더
- 안드로이드
- Dispatchers
- DiffUtil
- appcompatactivity
- 플로이드워셜
- 데코레이터 패턴
- http발전과정
- Android
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 |