in 또는 out 변화를 가질 수 있는 타입 매개변수를 보고합니다.
in 및 out 변화를 사용하면 Kotlin에서 더 정확한 타입 추론과 더 명확한 코드 의미를 얻을 수 있습니다.
예:
class Box<T>(val obj: T)
fun consumeString(box: Box<String>) {}
fun consumeCharSequence(box: Box<CharSequence>) {}
fun usage(box: Box<String>) {
consumeString(box)
consumeCharSequence(box) // 컴파일 오류
}
빠른 수정에서는 일치하는 변성 제어자를 추가합니다.
class Box<out T>(val obj: T)
fun consumeString(box: Box<String>) {}
fun consumeCharSequence(box: Box<CharSequence>) {}
fun usage(box: Box<String>) ++{
consumeString(box)
consumeCharSequence(box) // 문제 없음
}