我有一个关于 Kotlin 中数据类的问题。
假设我们有两个带有循环引用的类:
data class Foo(
var bar: Bar? = null
)
Run Code Online (Sandbox Code Playgroud)
data class Bar (
var foo: Foo? = null
)
Run Code Online (Sandbox Code Playgroud)
和主要功能:
fun main() {
val f = Foo()
val b = Bar()
f.bar = b
b.foo = f
f.hashCode()
b.hashCode()
//println(f)
//println(b)
}
Run Code Online (Sandbox Code Playgroud)
Kotlin 自动生成的代码将使 main 函数进入堆栈溢出。你可以在Kotlin Playground试试这个。
这是预期的行为吗?请注意,这是一个基本示例,但这将发生在现实生活中,例如,在 Bar 中,我们可以拥有 List、Set 或 Foo 的泛型集合,而不是对 Foo 的引用。
Kotlin 不应该产生某种编译器错误,或者即使在其他语言中也会发生这种情况?
同样的事情,但在 Java 中
kotlin ×1