我有两个条件A2和A3尝试它。
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)
}
}
}
他们都编不好。
在A2的条件下,它会说unresolved reference:var1
,而另一个条件是Modifier 'inner' is not applicable to
。
答案 0 :(得分:2)
枚举常量需要存在而不必显式初始化,而需要首先创建周围的类OutA
。您无法从静态上下文访问非静态值。使类成为单例,即object
,将使代码编译:
object OutA {
var var1 = ""
enum class A2 {
;
init {
print(var1)
}
}
}
这是因为编译器正在创建OutA
的实例(唯一一个),并且其var1
可供枚举访问。