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

    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 대신 타입 파라미터를 사용한다.

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