¿Cómo implementa HashMap la interfaz MutableMap en Kotlin?

(Nota: hay un spoiler potencial para uno de los Kotlin Koans a continuación).

Dada una function de order superior que toma una function literal como esta:

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 } 

¿Cómo es que java.util.HashMap satisface la interfaz MutableMap que está orientada la build ? ¿Kotlin admite algún tipo de pato o es un caso especial en el lenguaje de Kotlin solo para ciertas classs que son parte del JDK?

Miré la documentation de Kotlin sobre las interfaces y busqué un poco, pero no pude encontrar nada que pareciera explicar esto.

El libro Kotlin in Action dice lo siguiente sobre ArrayList y HashMap :

Kotlin los ve como henetworkingados de las interfaces MutableList y MutableSet Kotlin, respectivamente.

Así que básicamente sí, como ha propuesto, es un caso especial para estas collections que se implementa de alguna manera en el comstackdor de Kotlin. Desafortunadamente, este es todo el detalle que proporcionan, así que si quieres saber más, probablemente tengas que sumergirte en la fuente del comstackdor.

Supongo que lo más importante es que esta no es una característica del idioma que puedas usar tú mismo.

  • Se deben declarar las funciones locales de Kotlin antes del uso
  • ¿Cuál es la syntax correcta para anular una function de miembro de interfaz con un modificador de visibilidad?
  • Kotlin || ¿Cómo distinguir la id de la vista de onClick () como la statement de cambio en Android?
  • Validar files XML grandes contra grandes XSD, ¿hay alguna manera rápida de hacerlo?
  • JsonProperty no funciona mientras la minificación está habilitada
  • Usar varios lenguajes JVM en el mismo proyecto
  • ¿Hay alguna manera de cambiar mi método a la stream Observable que será una cadena de modificadores?
  • ¿Cómo se organizan múltiples corrutines y bloques de expectativas en una testing de Kotlin Spek?
  • kapt no resuelve las classs generadas por protobuf
  • Android ViewModelProviderFactory en kotlin
  • Referencia no resuelta: data binding