【问题标题】:Unresolved reference inside a nested class Kotlin嵌套类 Kotlin 中未解析的引用
【发布时间】:2020-05-14 16:03:19
【问题描述】:

我有一个带有变量控制器和嵌套类 A ​​的活动。在 A 类中,我想访问控制器变量。我可以这样做吗?

class MyActivity: AppCompatActivity() {

   private val controller: MyController

   ....methods of activity...

   override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)

        controller = Controller()
        // Doing stuff
   }


   private class MyListener internal constructor(x: Int): LocalClass.Listener {

      override fun onCallOne() {
           // I get an unresolved reference here
           controller.method()
      }

      override fun onCallTwo() {}

      override fun onCallThree() {}

   }

}

当我从 Java 代码粘贴相同的代码时,上面的代码是由 AndroidStudio 自动转换制成的,其中控制器变量可以从嵌套类 MyListener 访问

【问题讨论】:

    标签: java android-studio kotlin private


    【解决方案1】:

    我找到了。 答案是我必须将 MyListener 类设为内部 所以正确的声明是

    private inner class MyListener internal constructor(x: Int)...
    

    【讨论】:

    • 否则如果你不想使用inner也可以使用this@MyActivity.method()
    • 不正确。非inner 类没有要引用的关联外部类实例。 this@ 语法仅用于解决模棱两可的范围。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-10-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-17
    • 2016-07-02
    相关资源
    最近更新 更多