これは簡単ではありませんが、私はここで月曜日の朝の午前を過ごしています。Gsonを使用してオブジェクトをロード
いくつかの設定オブジェクトをロードするために、Gson
ライブラリからいくつかのメソッドを実装するメソッドを作成したいと思います。基本的に、私は別の設定オブジェクトの束を持っているが、私は、私のようなもの持っているしたいと思いますし、各クラスのloadメソッドをオーバーライドするhabeしたくない:
InputStream
に渡すことができます
public class ConfigLoader {
public static void main(final String[] args) {
final ConfigurationSettings loadedConfigSettigs =
load("testSettings.json", ConfigurationSettings.class);
final AlternativeConfigurationSettings alternativeConfigSettigs =
load("testSettings2.json", AlternativeConfigurationSettings .class);
}
public T load(final InputStream inputStream, final Class<T> clazz) {
try {
if (inputStream != null) {
final Gson gson = new Gson();
final BufferedReader reader =
new BufferedReader(new InputStreamReader(inputStream));
return gson.fromJson(reader, clazz);
}
} catch (final Exception e) {
}
return null;
}
}
をそして私が戻したいオブジェクトのクラス。これを行う簡単な方法はありますか(クラスをロードできるようにするメソッドを作成する必要はなく、クラスごとに特定のローダを作成する必要もありません)。
問題は何ですか?あなたのコードで正しくない唯一のものは、 "typable"ではないので、Objectの型付けです。代わりにTに直接戻ってください。 –
監督を指摘してくれてありがとう。私はコードを修正し、どのように私がそれを使用したいかを示すいくつかの文脈を与えました。私は基本的にクラスを渡したオブジェクトをロードするローダーを各クラスにローダーを作成することなく渡すことができます( 'Class'メソッドを使用する必要があります)。 –
OKですが、これはうまくいきます(InputStreamの代わりにStringを渡すという事実以外にも、あなたの意見があります)。 (あるいは、あなたがどんな問題を抱えているか教えてください)。私はあなたがしようとしていることに、あなたがそれをやっているように見えることに何の問題も見ません。それで、あなたを塞いでいるのは何ですか? –