[解決済み] KotlinでGsonを使ったTypeToken + ジェネリックの使い方
2022-06-12 13:51:53
質問
カスタムクラス(Turns)からジェネリックタイプのListを取得することができないのですが。
val turnsType = TypeToken<List<Turns>>() {}.type
val turns = Gson().fromJson(pref.turns, turnsType)
と書いてあった。
cannot access '<init>' it is 'public /*package*/' in 'TypeToken'
どのように解決するのですか?
このインラインファンを作成します。
inline fun <reified T> Gson.fromJson(json: String) = fromJson<T>(json, object: TypeToken<T>() {}.type)
という具合に呼び出すことができます。
val turns = Gson().fromJson<Turns>(pref.turns)
// or
val turns: Turns = Gson().fromJson(pref.turns)
以前の代替品
代替案1:
val turnsType = object : TypeToken<List<Turns>>() {}.type
val turns = Gson().fromJson<List<Turns>>(pref.turns, turnsType)
には
object :
で、具体的な型は
fromJson<List<Turns>>
代替案 2:
cypressiousさんがおっしゃるように、この方法でも実現可能です。
inline fun <reified T> genericType() = object: TypeToken<T>() {}.type
として使う。
val turnsType = genericType<List<Turns>>()
関連
-
[解決済み] golangでチャンTの満杯を監視する
-
[解決済み] KotlinのPair用コンパレータ
-
[解決済み] リフレクションを使ってジェネリックメソッドを呼び出すにはどうしたらいいですか?
-
[解決済み] GsonでList<T>オブジェクトをデシリアライズする?
-
[解決済み】Kotlinのreifiedキーワードはどのように機能するのですか?
-
[解決済み】Scala。抽象型とジェネリックス
-
[解決済み] Kotlinのジェネリックにおける "*"と "Any "の違いについて
-
[解決済み] なぜ例がコンパイルできないのか、別名、(co-, contra-, in-)分散はどのように機能するのか?
-
[解決済み] KotlinでGsonを使ったTypeToken + ジェネリックの使い方
-
[解決済み] なぜGoにはジェネリックがないのか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] golangでチャンTの満杯を監視する
-
[解決済み] KotlinのPair用コンパレータ
-
[解決済み】Kotlinのreifiedキーワードはどのように機能するのですか?
-
[解決済み】Scala。抽象型とジェネリックス
-
[解決済み】Gson - Jsonから型付きArrayList<T>に変換する。
-
[解決済み] Kotlinのジェネリックにおける "*"と "Any "の違いについて
-
[解決済み] なぜ例がコンパイルできないのか、別名、(co-, contra-, in-)分散はどのように機能するのか?
-
[解決済み] KotlinでGsonを使ったTypeToken + ジェネリックの使い方
-
[解決済み] kotlinのoutキーワードとは
-
[解決済み] なぜGoにはジェネリックがないのか?