HashMap如何在Kotlin中实现MutableMap接口?
(注意:下面的一个Kotlin Koans有一个潜在的扰流器。)
给定一个函数如下所示的高阶函数:
fun <K, V> buildMap(build: MutableMap<K, V>.() -> Unit): Map<K, V> { // How does java.util.HashMap satisfy the MutableMap interface? // Does Kotlin support ducktyping? val map = HashMap<K, V>() map.build() return map }
java.util.HashMap如何满足build
目标所针对的MutableMap
接口? Kotlin是否支持某种类型的ducktyping,或者这是Kotlin语言中的一个特殊情况,只是作为JDK的一部分?
我看了接口上的Kotlin文档并搜索了一下,但找不到任何似乎可以解释的内容。
“Kotlin in Action”书籍中介绍了关于ArrayList
和HashMap
的以下几点:
Kotlin将它们视为分别从Kotlin的
MutableList
和MutableSet
接口继承而来。
所以基本上是的,正如你所建议的那样,在Kotlin编译器中以某种方式实现这些集合是一个特例。 不幸的是,这是他们提供的所有细节,所以如果你想知道更多,你可能不得不深入到编译器的源头。
我想主要的是,这不是一个你可以使用自己的语言功能。