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)
위와 같이 객체에 대한 정보가 출력
반응형
'언어 > Kotlin' 카테고리의 다른 글
| [Kotlin] 범위 함수 (0) | 2023.04.14 |
|---|---|
| [Kotlin] 확장 속성, 함수 추가 (0) | 2023.04.07 |
| [Kotlin] 함수 유형 및 람다 표현 (1) | 2023.03.24 |
| [Kotlin] 속성 위임 정의 (0) | 2023.03.17 |
| [Kotlin] 공개 상태 (0) | 2023.03.10 |