객체를 하나만 담는 클래스를 살펴보자. 이 클래스는 저장할 원소의 정확한 타입을 지정한다.
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 대신 타입 파라미터를 사용한다.