* 기본 문법 - Data Class
- Data를 전달하는 목적으로 사용된다.
- Dto와 비슷한 역할을 한다.
data class Person(val name: String, val age: Int,)
- 다양한 함수를 자동으로 생성한다.
val person1 = Person(name = "test", age = 10)
val person2 = Person(name = "test", age = 10)
// 1. equals()
println(person1 == person2) // true
// 2. hashCode()
println(person1.hashCode() == person2.hashCode()) // true
val hashSet = hashSetOf(person1)
println(hashSet.contains(person2)) // true
// 3. toString()
println(person1.toString()) // Person(name=test, age=10)
println(person2.toString()) // Person(name=test, age=10)
// 4. copy()
val copyPerson = person1.copy(name = "modify")
println(person1) // Person(name=test, age=10)
println(copyPerson) // Person(name=modify, age=10)
- 구조 분할을 사용할 수 있다.
val person1 = Person(name = "test", age = 10)
println("이름 = ${person1.name}, 나이 = ${person1.age}") // 이름 = test, 나이 = 10
println("이름 = ${person1.component1()}, 나이 = ${person1.component2()}") // 이름 = test, 나이 = 10
val (name, age) = person1 // 구조 분할
println("이름 = $name, 나이 = $age") // 이름 = test, 나이 = 10
* 기본 문법 - Singleton
- singleton 패턴: Class의 Instance를 하나의 단일 Instance로 제한하는 패턴이다.
- 직접 Instance화 하지 못하도록 생성자를 private로 숨긴다.
- object 키워드를 사용하여 Singleton 객체를 생성할 수 있다.
- object 키워드를 사용하여 Singleton 객체를 생성할 경우, 프로세스가 메모리 상에 올라갈 때 곧바로 생성된다.
- 호출이 발생할 때 객체를 생성하기 위해서는 지연 할당(by lazy)를 사용할 수 있다.
object Singleton {
val number = 1234
fun printNumber() = println(number)
}
object DatetimeUtils {
val now: LocalDateTime
get() = LocalDateTime.now()
}
fun main() {
println(DatetimeUtils.now) // 2022-10-28T19:18:03.676434700
println(DatetimeUtils.now) // 2022-10-28T19:18:03.676434700
println(DatetimeUtils.now) // 2022-10-28T19:18:03.676434700
}
'Kotlin' 카테고리의 다른 글
[Kotlin] 범위 지정 함수 (0) | 2023.03.23 |
---|---|
[Kotlin] 기본 문법 (3) (0) | 2022.10.27 |
[Kotlin] 기본 문법 (2) (0) | 2022.10.25 |
[Kotlin] 기본 문법 (1) (0) | 2022.10.23 |
[Kotlin] Kotlin이란? (0) | 2022.10.21 |