스터디/이펙티브코틀린
아이템 23 - 타입 파라미터의 섀도잉을 피하라
아래는 프로퍼티와 파라미터가 같은 이름을 가지는 섀도잉을 나타낸다. 이 경우 함수 내에서 섀도잉으로 인해 프로퍼티를 가르키게 된다. class Forest(val tree: Tree) { // (1) fun addTree(tree: Tree) { // (2) println(tree) // (3) -> (1)을 바라본다. } } 제네릭에 대한 이해가 부족할 때 아래와 같이 사용하여 섀도잉이 되면 원치않은 방향으로 파라미터가 사용될 수 있다. class Forest { // (1) fun addTree(tree: T) { // (2) // 여기서 tree의 T(2)는 T(1)와 서로 다른 타입이기 때문이다. // 이름을 바꾸던가 하나만 사용하도록 하자. } } class Forest { // (1) fun ..