Noob à Kotlin. J'ai un hashmap et qui contiendrait un tableau pour l'une de ses clés. Cependant, lorsque je lis la valeur de cette clé, Kotlin ne la reconnaît pas comme un tableau.
Ma hashmap:
tests.add(someHashMap) myHashMap["test"] = tests
3 Réponses :
Par incompatibilité de type, faites-vous référence à l'erreur suivante?
error: seuls les appels sûrs (?.) ou non-null asserted (!!.) sont autorisés sur un récepteur Nullable de type Array
Si tel est le cas, vous devez remplacer l'expression par "__ $ {myHashMap [" test "] ?. count ()} __"
ou "__ $ {myHashMap [" test " ] !!. count ()} __ "
car myHashMap [" test "]
peut être évalué à null.
Si vous voulez que myHashMap ["test"]
renvoie ["Hello": "World", "ABC": 3]
, cela doit être une carte. Une façon de le saisir peut être:
mapOf ("test" to mapOf ("Hello" to "World", "ABC" to 3))
Cela pourrait être également la raison de votre erreur d'incompatibilité de type. En le définissant comme ci-dessus, le résultat serait:
var testString = "__ $ {myHashMap [" test "] !!. Count ()} __" // -> 2 code>
hashMapOf ("test" to arrayOf
donnerait quelque chose comme:
{ "test": { "Hello": "World", "ABC": 3 } }
Dans l'exemple que vous avez mentionné ici, var testString = "__ $ {myHashMap [" test "]. count ()} __"
Vous obtenez une erreur car myHashMap ["test"] pourrait être nul et dans ce cas .count () lèverait NullPointerException.
Exemple - Ici, vous avez créé le hashmap avec la clé "test" et avez essayé d'y accéder. Essayez d'exécuter ceci -
println (myHashMap ["dummy"]) // Sortie - null
Puisque kotlin est null sûr, si l'objet est nullable, il est nécessaire d'utiliser l'une des assertions nulles sûres suivantes.
Exemple - myHashMap ["dummy"] !!. count () Le résultat ici serait NullPointerException
Exemple - myHashMap ["dummy"] ?. count () Le résultat ici serait nul