【发布时间】:2021-10-19 16:55:23
【问题描述】:
我刚刚有了一个奇怪的发现,想知道为什么它会这样工作。以下代码会引发编译器错误:
interface A
class B: A
val mapOfA: Map<A,A>
val mapOfB = mapOf<B,B>()
mapOfA = mapOfB
你得到
Type mismatch.
Required: Map<A, A>
Found: Map<B, B>
但是这段代码有效。
val mapOfA: Map<A,A>
val mapOfB = mapOf<B,B>()
mapOfA = mapOfB.toMap()
唯一的区别是我现在打电话给mapOfB.toMap()。 mapOfB 已经是 Map 那么为什么这会改变呢?我正在使用 Kotlin 版本 1.5.10。这是怎么回事?
【问题讨论】:
-
B是否扩展A? -
哦,该死的,忘了把那个细节放进去。刚刚更新了问题来表明这一点。
标签: list dictionary kotlin generics data-structures