언어/Kotlin

[Kotlin] 제네릭, enum 클래스, 데이터 클래스

implement 2023. 3. 31. 12:00
728x90

 

제네릭

제네릭(일반 데이터 유형)이란 데이터타입을 일반화하는 것으로 어떤 데이터 타입이 들어올지 모르는 곳에 제네릭을 사용한다.

 

사용법

<>사이에 데이터 유형의 이름을 써서 사용.

class className <genericDataType> (
    val propertyName: genericDataType
)

fun main() {
    val instanceName = className <type> (property)
}

ex)

class Question <T> (val question: String, val answer: T)

fun main() {
    val question1 = Question<Int> ("1+1", 2)
    val question2 = Question<Boolean> ("2+2=4", true)
}

 

enum 클래스

가능한 값 집합이 제한되어 있는 유형

 

사용법

class 앞에 enum을 붙이면 된다.

enum class enumName {
    CASE1, CASE2, CASE3
}
enumName.CaseName

ex)

enum class Difficulty {
    EASY, MEDIUM, HARD
}

fun main() {
    val difficulty = Difficulty.EASY
    
    when (difficulty) {
    	Difficulty.EASY -> println("쉬움")
        Difficulty.MEDIUM -> println("중간")
        else -> println("어려움")
    }
}

출력 : "쉬움"

 

데이터 클래스

클래스는 데이터만 포함하고 메서드는 없음. 하지만 데이터 클래스를 사용하면 toString()과 같이 일부 메서드를 자동으로 구현 가능함.

 

사용법

class 앞에 data를 붙이면 된다.

class Question <T> (val question: String, val answer: T)

fun main() {
    val question1 = Question<Int> ("1+1", 2)
    println(question1.toString())
}

출력 : Question@16b98e56

위와 같이 toString()에 대한 메서드가 없으므로 주소가 출력됨

data class Question <T> (val question: String, val answer: T)

fun main() {
    val question1 = Question<Int> ("1+1", 2)
    println(question1.toString())
}

출력 : Question(question=1+1, answer=2)

위와 같이 객체에 대한 정보가 출력

 

 

 

 

 

 

반응형