본문 바로가기

Kotlin

[Kotlin] 기본 문법 (4)

* 기본 문법 - 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