250x250
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 |
Tags
- intent
- Flutter
- drift
- Dialog
- android
- Kotlin
- binding
- activity
- Navigation
- LifeCycle
- textview
- 안드로이드
- DART
- livedata
- TEST
- Compose
- textfield
- tabbar
- viewmodel
- ScrollView
- 앱
- 계측
- data
- appbar
- Coroutines
- CustomScrollView
- 앱바
- scroll
- 테스트
- Button
Archives
- Today
- Total
Study Record
[Kotlin] Enum Class 본문
728x90
😶 Enum Class 개요
enum class TestEnum {
PLUS, TIME, MIN;
}
fun main() {
for(value in TestEnum.values()) println(value.name)
// kotlin 1.9.0 일 경우
for(value in TestEnum.entries) println(value.toString())
}
코틀린에서 enum 은 상수 집합을 보유할 수 있는 데이터 타입이다. class 앞에 enum 키워드를 추가하는 것으로 enum class 를 정의할 수 있고 클래스 내 열거 상수를 쉽표로 구분한다.
enum class Direction {
NORTH, SOUTH, WEST, EAST
}
예시 코드의 NORTH, SOUTH 등의 열거 상수들은 전부 "객체"이다.
😶 익명 클래스
열거 상수들은 기본 메서드를 재정의하는 것 뿐만 아니라 해당 메서드를 사용하여 자신의 익명 클래스를 선언할 수 있다.
enum class ProtocolState {
WAITING {
override fun signal() = TALKING
},
TALKING {
override fun signal() = WAITING
};
abstract fun signal(): ProtocolState
}
열거 상수의 정의의 마지막은 세미클론으로 구분한다.
😶 enum class 의 interface 구현
enum Class 에도 interface 를 상속받을 수 있다. 열거 상수들 자체가 객체이므로 기본 메서드들도 객체에서 호출할 수 있다.
interface TestInterface {
abstract fun apply(t: Int, u: Int)
}
enum class TestEnum : TestInterface {
PLUS, TIME;
override fun apply(t: Int, u: Int) {
println("$t + $u = ${t + u}")
}
}
fun main() {
TestEnum.PLUS.apply(3, 5)
}
열거 상수 자체에 메서드를 재정의할 수 있다.
interface TestInterface {
abstract fun apply(t: Int, u: Int)
}
enum class TestEnum : TestInterface {
PLUS {
override fun apply(t: Int, u: Int) {
println("$t + $u = ${t + u}")
}
},
TIME {
override fun apply(t: Int, u: Int) {
println("$t * $u = ${t * u}")
}
};
}
fun main() {
TestEnum.PLUS.apply(3, 5)
TestEnum.TIME.apply(3, 5)
}
😶 enum class 사용하기
for 문과 함께 열거 상수들을 접근할 수 있다.
enum class TestEnum {
PLUS, TIME, MIN;
}
fun main() {
for(value in TestEnum.values()) println(value.name)
// kotlin 1.9.0 일 경우
for(value in TestEnum.entries) println(value.toString())
}
enum class 의 이름과 position 을 얻을 수 있다. valueOf() 로 검색할 수 있다.
enum class TestEnum {
PLUS, TIME, MIN;
}
fun main() {
TestEnum.PLUS.name
TestEnum.PLUS.ordinal
println(TestEnum.valueOf(TestEnum.MIN.name))
}
728x90
'안드로이드 > Kotlin' 카테고리의 다른 글
[Kotlin] data class (데이터 클래스), Destructuring declarations (0) | 2023.08.31 |
---|---|
[Kotlin] Extensions 살펴보기 (0) | 2023.08.18 |
[Kotlin] Exception Class (예외 처리) (0) | 2023.08.09 |
[Kotlin] coroutines 살펴보기 (0) | 2023.08.08 |
[Kotlin] property (0) | 2023.07.21 |