티스토리 뷰
enum값은 미리정의된 타입에서 값을 가져와서 사용하기 때문에 대체적으로 안정적입니다.
스트링을 하드코딩하는거보다는요.
1. 기본적인 선언
enum class CustomType {
NORMAL, MEDIUM, BEST
}
2. 초기화를 하여주는 타입. 타입이 있는 타입?
enum class CustomType(val name: String) {
NORMAL("normal"),
MEDIUM("medium"),
BEST("best")
}
이렇게 사용 가능합니다.. val type = CustomType.MEDIUM.name => medium
3. 상태에 따른 값을 가져와서 사용
enum class CustomType {
NORMAL {
override fun index() = 1
override val isHidden: Boolean
get() = true
},
MEDIUM {
override fun index() = 2
override val isHidden: Boolean
get() = false
},
BEST {
override fun index() = 3
override val isHidden: Boolean
get() = false
};
abstract fun index() : Int
abstract val isHidden : Boolean
}
// use
val test = CustomType.NORMAL.index()
val test2 = CustomType.MEDIUM.isHidden
이건 요즘 많이 사용하는 방법이죠... 상태만 전달하고 나머지 값은 알아서 처리하도록 하는
4. Interface를 이용한 상태값 가져오기
interface Customable {
fun index() : Int
val isHidden : Boolean
}
enum class CustomType : Customable {
NORMAL {
override fun index() = 1
override val isHidden: Boolean
get() = true
},
MEDIUM {
override fun index() = 2
override val isHidden: Boolean
get() = false
},
BEST {
override fun index() = 3
override val isHidden: Boolean
get() = false
}
}
분리되어서 3번 타입보다는 좋아보입니다. 이건 입맛에 맞도록 사용하면 될것 같음.
5. companion object
enum class CustomType {
// Code
companion object {
val default: CustomType
get() = NORMAL
}
}
// Use
val test = CustomType.default
6. Enum을 가져와서 사용하는 방법
// valueOf를 이용하는 방법
val type = CustomType.valueOf("NORMAL")
// for문을 이용
for (type in CustomType.values()) {
// get
}
'Mobile > Android' 카테고리의 다른 글
Android. ViewPager에서 보이는 Fragment만 사용하기 (0) | 2019.07.31 |
---|---|
Android 9 파이에서 http 사용시 에러 발생 해결 (0) | 2019.07.20 |
Android. activity-alias를 왜 사용하는지 잘 모르겠는분들 보시면 좋아요... 별거는 아님. (0) | 2019.06.20 |
Android. gradle build fail. 'No matching client found for package name' (0) | 2019.06.17 |
Android. kotlin. static을 어떻게 쓰면 좋을까? (0) | 2019.06.15 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
TAG
- enum
- go
- docker
- golang
- php
- MySQL
- Spring
- Codable
- cocoapods
- nodejs
- Python
- github
- CentOS
- tomcat
- ios
- android
- Linux
- SWIFT
- intellij
- windows10
- war
- Java
- centos8
- Xcode
- ubuntu
- rxswift
- Gradle
- git
- Kotlin
- Windows
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함