class Outer {
private val outer = "Outer"
class Nested {
init {
print(outer) // 오류!!
}
}
}
class Outer {
private val bar: Int = 1
class Nested {
fun foo() = 2
}
}
val demo = Outer.Nested().foo() // == 2
class Outer {
private val outer = "Outer"
inner class Inner {
init {
print(outer) // 성공!!
}
}
}
class Outer {
private val bar: Int = 1
inner class Inner {
fun foo() = bar
}
}
val demo = Outer().Inner().foo() // == 1
JAVA는 기본 Class 가 outer Class 참조가 가능하고
static 키워드를 붙여야 outer Class 참조를 막을 수 있다
이를 Kotlin 에서는 반대로, inner 키워드를 붙여야 참조가 가능하지게끔 설계함!
이는 JAVA 의 innerClass 에 문제가 있었기 때문에, 기본값을 outer 참조 불가로 변경했음을 알 수 있다!!
→ inner Class 보단, Nested Class 를 사용하는것 이 좋다.
→ ViewHolder를 여러 Adapter 에서 사용 할 수 도 있기 때문에, 묵시적으로 Outer Class 를 참조하게 되면 여러 문제가 생길 수 있기 때문