在 Kotlin 中,假设我有data class A (val f: B)
and data class B (val f: A)
。我想初始化本地var a: A
and var b: B
这样a.f
is b
and b.f
is a
. A.f
and B.f
必须保留 vals。这种循环实例化可能吗?
data class A(val f: B)
data class B(val f: A)
fun foo() {
var a: A
var b: B
// instantiate a and b here with a.f == b and b.f == a ??
}
不完全是你想要的,但应该有效:
interface A {
val f: B
}
interface B {
val f: A
}
data class AImpl(override var f: B) : A
data class BImpl(override var f: A) : B
fun <T> uninitialized(): T = null as T
fun foo() {
var aImpl = AImpl(uninitialized())
var bImpl = BImpl(aImpl)
aImpl.f = bImpl
val a: A = aImpl
val b: B = bImpl
}
如果您不关心数据类属性val
s,您可以摆脱接口并仅使用实现类。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)