任意のクラスのインスタンスをJson形式に文字列変換をして、
そのJson形式の文字列をインスタンスに戻すというメソッドを実装したいです。
javaでは実装できていたのですが、kotlinで書けず質問しています。
javaで動いていたソース
java
1/** 2 * インスタンスを文字列変換して保存する。 3 */ 4public void setObject(String key, Object object) { 5 Gson gson = new Gson(); 6 setValue(key, gson.toJson(object)); // 値設定メソッドがほかにあり。gson.toJsonがObjectを文字列変換 7} 8 9/** 10 * 保存されている値をインスタンスに戻す。 11 */ 12public <T> T getObject(String key, Class<T> classOfT) { 13 Gson gson = new Gson(); 14 return gson.fromJson(getString(key), classOfT); // getStringでJson形式文字取得 15}
kotlinで試したこと
kotlin
1/** 2 * [key]に[any]を保存します。 3 */ 4fun setAny(key: String, any: Any) { 5 setValue(key, Gson().toJson(any)) // Objectは kotlinではAnyとすると聞いたのでAny。こっちは正しいと思っています。 6} 7 8/** 9 * とりあえずコンパイラーエラーになっていない。 10 */ 11fun <T> getAny(kiSpKey: KiSpKey, classOfT: Class<T>): T { 12 return Gson().fromJson(getString(kiSpKey), classOfT) 13} 14 15/** 16 * 呼び出し元 17 */ 18getAny("test", 任意のクラス名.class) // コンパイルエラー (Not enough information to infer type variable T)
呼び出し方、getAnyメソッドの定義の仕方のどちらが悪いかわかりません。
ご指摘お願いします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。