科特林!如何创建一个内部枚举类来从外部类获取一些属性?

时间:2018-04-04 02:59:00

标签: kotlin

我有两个条件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

1 个答案:

答案 0 :(得分:2)

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

object OutA {
    var var1 = ""

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

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