如何从内部枚举类访问外部类的属性?

IC *_*ice -3 enums static kotlin

var1我尝试使用两个枚举变体进行访问:A2A3

class OutA {

    var var1 = ""

    inner class A {
        init {
            print(var1)
        }
    }

    enum class A2 {
        ;

        init {
        print(var1)//unresolved reference:var1
        }
    }

    inner enum class A3 {//Modifier 'inner' is not applicable to 'enum class'
        ;

        init {
            print(var1)
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

但他们无法编译。

A2 报告unresolved reference:var1和另一个条件说Modifier 'inner' is not applicable to

为什么无法从枚举var1范围访问外部属性?

编辑:删除了屏幕截图,更新了标题和描述以促进重新开放问题。

s1m*_*nw1 5

枚举常量无需显式初始化即可存在,而OutA需要首先创建周围的类。您无法从静态上下文访问非静态值。使该类成为单例,即 an object,将使代码编译:

object OutA {
    var var1 = ""

    enum class A2 {
        ;
        init {
            print(var1)
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

OutA这是可行的,因为编译器正在创建 的一个实例(唯一的一个) ,并且它var1可供枚举访问。