如何从 Kotlin 的内部类访问外部类的成员?

Posted

技术标签:

【中文标题】如何从 Kotlin 的内部类访问外部类的成员?【英文标题】:how to access member of outer class from inner class in Kotlin? 【发布时间】:2019-09-03 02:21:47 【问题描述】:

如何从kotlin内部类的成员函数中访问外部类的成员。考虑以下代码。

class A
    var name: String

    class B
        fun show()
            print(name)          //<----- here ide shows error. name is not accessible
        
    

我正在 android studio 中编写此代码。它在用 java 编写时可以工作,但在我们用 kotlin 编写代码时就不行。

【问题讨论】:

将其设为内部变量。 B 不是标题中的 child 类或子类,它是一个 nested 类。在 Java 中,嵌套类默认是内部的;在 Kotlin 中它们不是。 【参考方案1】:

你应该将class B标记为inner

class A
  var name: String

  inner class B
    fun show()
      print(name)
    
  

【讨论】:

【参考方案2】:

这样使用

class A
lateinit var name: String

inner class B
    fun show()
        print(name)
    


【讨论】:

以上是关于如何从 Kotlin 的内部类访问外部类的成员?的主要内容,如果未能解决你的问题,请参考以下文章

外部类与内部类的访问

[Kotlin] 内部类

局部内部类和成员内部类

Java 成员内部类

内部类

内部类学习