Kotlin 科特林!如何创建内部枚举类以从外部类获取某些属性?

Kotlin 科特林!如何创建内部枚举类以从外部类获取某些属性?,kotlin,Kotlin,我试过两种情况A2和A3 class OutA { var var1 = "" inner class A { init { print(var1) } } enum class A2 { ; init { print(var1)//unresolved reference:var1 } } inner enum cla

我试过两种情况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的条件中,它说
未解析引用:var1
,另一个条件说
修饰符“inner”不适用于

枚举常量需要存在而不必显式初始化,而需要先创建周围的类
OutA
。不能从静态上下文访问非静态值。将类设置为单例,即
对象
,将使代码能够编译:

object OutA {
    var var1 = ""

    enum class A2 {
        ;
        init {
            print(var1)
        }
    }
}

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

代码图像是绝对无用的。有关避免发布图像的许多原因的列表,请参阅。代码和错误以文本形式存在,应按文本形式发布。当您在此处创建帐户时,建议您使用并阅读页面,以便熟悉此网站。请这样做,尤其是在这里发布你的下一个问题之前。@KenWhite-谢谢你的元帖子链接。添加到我的SO笔记中(只是用它来回答另一个问题)。@DavidMakogon:不客气。它似乎被相当多的人经常使用。遗憾的是没有代表。:-)这是一个非常有效的问题:它包含一个代码示例、一条错误消息和一个关于错误消息的问题。它还提供了一个明确和可用的答案。用户甚至阅读了第一条评论,并将图像替换为文本。你还想要什么?它不应该被关闭。典型的SO用户,有50k+选择新手。非常感谢