You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Kotlin中嵌套类无法访问的原因是什么?

Kotlin嵌套类访问报错的解决方法

你遇到的问题是Kotlin普通嵌套类的访问方式错误:

  • Kotlin中,不带inner关键字的嵌套类默认是静态嵌套类,它不属于外部类的实例,因此不能通过外部类的对象(比如tester)来访问。
  • 正确的访问方式是直接通过外部类的类名调用嵌套类。

修正后的基础代码:

fun main(){
    var tester = Test()
    println(tester.x) // 42
    Test.Foo().bar() // 直接用外部类名访问嵌套类,编译通过
}

class Test {
    var x:Int = 42
    class Foo {
        fun bar() = println("foobar!")
    }
}

如果需要让嵌套类访问外部类的成员变量或方法,需要把嵌套类声明为内部类,也就是加上inner关键字。此时内部类会持有外部类实例的引用,就能通过外部类对象访问了:

fun main(){
    var tester = Test()
    println(tester.x) // 42
    tester.Foo().bar() // 内部类可通过外部实例访问
}

class Test {
    var x:Int = 42
    inner class Foo {
        fun bar() {
            println("foobar!")
            println("外部类的x值:${this@Test.x}") // 访问外部类成员
        }
    }
}

内容的提问来源于stack exchange,提问作者yen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 07:50:29