Archives
Recent Posts
«   2025/02   »
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
Today
Total
관리 메뉴

안드로이드 개발자의 창고

[17일차 kotlin] 열거형 클래스(Enum Class) 본문

Computer/Kotlin

[17일차 kotlin] 열거형 클래스(Enum Class)

Wise-99 2023. 5. 20. 03:12

 

 

출처 : 안드로이드 앱스쿨 2기 윤재성 강사님 수업 PPT

 

 

 

📖 열거형 클래스

  • 프로그램 개발 시 특정 그룹안의 구성 요소를 정의하는 값이 필요하고자 할 때 사용한다.
  • 열거형은 정의한 단어 자체가 프로그램에서 사용하는 값이 된다.
  • 월을 나타내는 단어들, 혈액형을 나타내는 단어들, 방향, 성별 등등

 

 

 

📖 예제 코드

기본 Enum Class

fun main() {

    printDirection(Direction.NORTH) // 북쪽입니다
    printDirection(Direction.WEST)  // 서쪽입니다
}

// 열거형 정의
enum class Direction{
    NORTH, SOUTH, WEST, EAST
}

fun printDirection(a1:Direction){
    when(a1) {
        Direction.NORTH -> println("북쪽입니다")
        Direction.SOUTH -> println("남쪽입니다")
        Direction.WEST -> println("서쪽입니다")
        Direction.EAST -> println("동쪽입니다")
    }
}

 

 

 

companion을 활용한 Enum Class

fun main() {

    printDirection2(2) // 서쪽입니다
    printDirection2(3) // 동쪽입니다
}

// companion
class Direction2{
    companion object{
        val NORTH = 0
        val SOUTH = 1
        val WEST = 2
        val EAST = 3
    }
}

fun printDirection2(a1:Int){
    when(a1) {
        Direction2.NORTH -> println("북쪽입니다")
        Direction2.SOUTH -> println("남쪽입니다")
        Direction2.WEST -> println("서쪽입니다")
        Direction2.EAST -> println("동쪽입니다")
    }
}

 

 

 

사용자 정의 Enum Class

fun main() {
    printNumber(Number.TWO) // TWO 입니다 / TWO 입니다 / 이입니다
}

enum class Number(var num:Int, val str:String){
    ONE(1,"일"), TWO(2,"이"),THREE(3,"삼")
}

fun printNumber(a1:Number){
    when(a1){
        Number.ONE -> println("ONE 입니다")
        Number.TWO -> println("TWO 입니다")
        Number.THREE -> println("THREE 입니다")
    }

    when(a1.num){
        1 -> println("ONE 입니다")
        2 -> println("TWO 입니다")
        3 -> println("THREE 입니다")
    }

    when(a1.str){
        "일" -> println("일입니다")
        "이" -> println("이입니다")
        "삼" -> println("삼입니다")
    }
}

✔️ 코드 해석

  • enum class Number(var num:Int, val str:String){ ... }
    • 열거형을 정의할 때 값도 설정할 수 있다.
    • 주 생성자는 열거형 하나를 만드는 양식을 의미한다.
    • 변수의 개수는 무제한이다.