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
    }
}