【发布时间】:2021-08-07 15:56:27
【问题描述】:
当我这样做时
val data = object {
val field = 5
}
fun main(){
println(data.field) // throws
}
它抛出Unresolved reference: field。
但这一切都还好:
val field = 6
class Data(val field: Int = 7)
val data7 = Data()
fun main(){
val data4 = object {
val field = 4
}
println(field) // ok
println(data4.field) // ok
println(data7.field) // ok
}
我不明白,为什么 Kotlin 不允许我使用顶级对象的属性?我认为object 就像类对象一样,但是匿名(没有类)并且在上面的示例中data 和data7 之间应该没有区别。不过好像有区别。
【问题讨论】:
-
严格来说,“未解析的引用:字段”不会被“抛出”,因为它不是异常:它是编译时错误,由编译器由于无效代码而生成。当有效代码遇到无法处理的情况时,会在运行时引发异常。
标签: kotlin