2015-07-16 15 views
7

Sto provando Kotlin e ho riscontrato un piccolo problema che non riesco a risolvere. Quando ho la seguente costruzione posso mettere gli elementi della mappa:Mettere l'elemento in HashMap con l'interfaccia Map

val map = HashMap<String, String>() 
map["asd"] = "s" 
map.put("34", "354") 

Tuttavia quando creo una mappa con l'interfaccia Map posso solo leggerle, quello che sto facendo di sbagliato?

val map: Map<String, String> = HashMap<String, String>(); 
map.put("24", "34") //error 
map["23"] = "23" //error 

O forse sto confondendo qualcosa sulle interfacce in Kotlin?

risposta

10

Nella prima mappa di esempio si ottiene il tipo di HashMap, nel secondo esempio di trasmissione sulla Mappa di interfaccia.

Map è una mappa di sola lettura, non v'è alcuna put/set, vedi here

Al fine di essere in grado di modificare la mappa, è necessario utilizzare MutableMap

+0

Venendo da Java, è importante ricordare che mappa non proviene da java.util.Map ma dalla mappa definita in Collections.kt. Come novellino di Kotlin, anch'io ne sono stato sorpreso. Come accennato in precedenza, la mappa è di sola lettura; per cambiare la mappa usa MutableMap. Sono disponibili anche metodi di supporto per creare mappe diverse in Maps.kt, ad es. HashMapOf ecc –