Kotlin -- inner and nested
Kotlin – inner and nested
和Java一样,在Kotlin中,你可以在一个类中声明另一个类。不太一样的是,在kotlin中,嵌套类(nested class)默认不能访问其外部类(outer class)的实例,除非你明确指出可以访问。
在kotlin中,一个没有修饰符的嵌套类与Java中的静态嵌套类一样。为了能让其引用其外部类,需要用inner
修饰符指定。
在class A中声明一个class B | 在Java中 | 在Kotlin中 |
---|---|---|
Nested class (doesn’t store a reference to an outer class) | static class A | class A |
Inner class (stores a reference to an outer class) | class A | inner class A |
Nested class不能引用其outer class,而Inner class则可以。
其语法如下:
class Outer {
inner class Inner {
fun getOuterReference(): Outer = this@Outer
}
}