Perdóname si esto es trivial o no es posible, pero estoy teniendo un momento de lunes por la mañana aquí.Cargar un objeto usando Gson
Me gustaría crear un método que implemente algunos métodos de la biblioteca Gson
para cargar algunos objetos de configuración. Básicamente, tengo un montón de diferentes configuraciones de objetos, pero no quiero que habe reemplazar el método de carga para cada clase para que me gustaría tener algo como:
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;
}
}
donde pueda pasar en el InputStream
y la clase del objeto que quiero devolver. ¿Hay una manera simple de hacer esto (no quiero tener que crear un método para cada Clase que quiero cargar, ni quiero tener que crear un cargador específico para cada clase)?
¿Cuál es el problema? Lo único que no es correcto en su código es la tipificación de Object, porque no es "tipable". Deberías devolver directamente T en su lugar. –
Gracias por señalar esa supervisión. He modificado el código y le he dado más contexto para mostrar cómo me gustaría usarlo. Básicamente, me gustaría tener un cargador que cargue un objeto dado que la clase se le pasó sin tener que crear un cargador para cada clase (ya que tendría que usar el método 'Clase'). –
OK, pero esto funciona, a la derecha (además del hecho de que está pasando un String en lugar de un InputStream, pero tenemos su punto). (O bien cuéntanos qué problema tienes). No veo ningún problema en lo que estás tratando de hacer y en la forma en que pareces hacerlo. Entonces, ¿qué te está bloqueando? –