如何导入Kotlin枚举类的伴生对象成员?
解决枚举类伴生对象成员的导入问题
当前代码里的import Color.*只会导入枚举类的枚举常量(R、G、B),并不会自动导入伴生对象中的成员,所以直接访问X会编译失败。要直接使用伴生对象的成员,有几种导入方式:
方式1:单独导入伴生对象的指定成员
直接明确导入需要的成员X:
import Color.* import Color.Companion.X
方式2:导入伴生对象的所有成员
如果伴生对象包含多个成员,用*一次性导入所有:
import Color.* import Color.Companion.*
修改后的完整可编译代码:
import Color.* import Color.Companion.* enum class Color { R, G, B; companion object { val X = 1 } } fun main() { println(R.ordinal) println(X) // 现在可以直接访问X }
可选优化:给伴生对象命名
如果觉得默认的Companion名称不够清晰,可以给伴生对象自定义名称,导入时使用这个名称:
enum class Color { R, G, B; companion object ColorUtils { // 自定义伴生对象名称 val X = 1 } }
对应的导入语句:
import Color.* import Color.ColorUtils.*
内容的提问来源于stack exchange,提问作者david.perez
相关产品推荐
相关产品推荐

