더북(TheBook)

객체를 하나만 담는 클래스를 살펴보자. 이 클래스는 저장할 원소의 정확한 타입을 지정한다.

IntroGenerics/RigidHolder.kt

package introgenerics
import atomictest.eq

data class Automobile(val brand: String)

class RigidHolder(private val a: Automobile) {
  fun getValue() = a
}

fun main() {
  val holder = RigidHolder(Automobile("BMW"))
  holder.getValue() eq
    "Automobile(brand=BMW)"
}

RigidHolder는 그다지 재사용성이 좋지 않다. 이 객체는 Automobile밖에 담을 수 없다. 이보다는 여러 다른 타입에 대해 각 타입에 맞는 새로운 타입의 보관소 클래스를 만들 수 있으면 좋을 것이다. 이를 위해 Automobile 대신 타입 파라미터를 사용한다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.