2017-02-28 1 views
1

私は、キーが単一のオブジェクトであり、値がジェネリックを含む多くのオブジェクトであるというマップを作成したいと考えています。 Kotlinでこれを行う簡潔な方法はありますか?私は過去にデータクラスを使用しましたが、ジェネリックで動作させる方法は見つけられませんでした。ジェネリックを含む値でマップを作成する

ありがとうございます!

編集:ここでは例です:

あなたの例から作業
class SomeClass<E> { 
    data class Data(val str: String, val int: Int, val e: E) //the last value is invalid 

    val map: MutableMap<String, Data> = mutableMapOf() 

} 
+3

あなたは使用例を追加していただけますか?それは質問を明確にするでしょう。 – voddan

+0

Guavaの[Multimap](https://github.com/google/guava/wiki/NewCollectionTypesExplained#multimap)のようなものが欲しいようです。そうですか? – mfulton26

+0

例を使って投稿を更新しました。 Multimapはかなり近いですが、私は複数の値の型をサポートしたいと思います。 – henrik

答えて

2

、これはあなたのために働く必要があります。

data class Data<E>(val str: String, val int: Int, val e: E) 

class SomeClass<E> { 

    val map: MutableMap<String, Data<E>> = mutableMapOf() 

} 

私は外部の、一般的なクラスとしてDataを定義し、実際のクラス内でそれを使用しています。

編集:実は、あなたもアウタークラスの外でデータクラスを移動する必要はありません。

class SomeClass<E> { 
    data class Data<T>(val str: String, val int: Int, val e: T) 

    val map: MutableMap<String, Data<E>> = mutableMapOf() 

} 
+0

清潔なソリューション、ありがとう! – henrik

関連する問題