2017-08-05 5 views
-2

アンドロイドのKotlinアプリケーションを作成しようとしていますが、私は以下のエラーが発生しました。どこが間違っていたのですか?エラー:型推論が失敗しました

は、これは私が私のHashMapを宣言している方法です。

var mParent: MutableMap<*, *> ?= null 
mParent = HashMap() 

エラー:

type inference failed. Not enough information to infer parameter K in constructor HashMap. Please specify it explicitly

答えて

1

あなたがマップのキーと値の種類を指定する必要があります。

mParent = HashMap<String, String>() 

またはこのような:

var mParent: MutableMap<String, String>? = null 
mParent = HashMap() 

は、一般的なパラメータ手段として*キーと値として許可されたオブジェクトの任意の型を持つこのような何か。そのため、HashMapを作成すると、コンパイラはキーと値の正確な型が何であるか分かりません。つまり、型を推論することはできません。そういうわけで、あなたはそのようなエラーを受けます。

提案:Kotlinイディオム)が(マップを作成するためにmapOf()またはmutableMapOf()メソッドを使用することを提案ではなく、JavaのスタイルHashMapを使用して:

mParent = mutableMapOf<String, String>() 
0

あなたはkotlinでこのようにHashMap使用することができます....

val context = HashMap<String, Any>() 
context.put("world", "John") 
context.put("count", 1) 
context.put("tf", true) 
0

キーと値が何になるかわからない場合は、Anyを使用してください。

var mParent: MutableMap<Any, Any> ?= mutableMapOf() 

あなたのケースでは、コンパイラはそれらのaestriksの意味を理解していません。

関連する問題