언어/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)
위와 같이 객체에 대한 정보가 출력
반응형