Estoy usando Spring RestTemplate
para hacer llamadas en contra de un servicio web REST. Una de estas llamadas es devolver una lista de objetos de un cierto tipo. Los métodos RestTemplate
requieren que se proporcione un argumento de clase para indicar el tipo de devolución esperada.¿Cómo evito las advertencias del compilador cuando la información de tipo genérico no está disponible?
// restTemplate is type org.springframework.web.client.RestTemplate
URI restServiceURI = new URI("http://example.com/foo")
restTemplate.getForObject(restServiceURI, List<Foo>.class);
Obviamente, esto no se compila. No puede obtener una propiedad estática .class
cuando proporciona el argumento de tipo así. El código se compila cuando elimino el argumento tipo, pero eso genera una advertencia del compilador rawtypes
.
Mi pregunta es simple. ¿Estoy atascado con la supresión de la advertencia del compilador o hay una manera más limpia de codificar para esto?
Jackson está en el classpath, y Spring 3.x lo usa automáticamente para ordenar/deshacer esas transmisiones. Esperaba aprovechar eso para mi ventaja, pero parece que tengo que hacer esto en un nivel inferior. Me sorprende que Spring no haya proporcionado una manera fácil de manejar los retornos de la Colección como lo hace con otras clases de plantillas. –
Este método funciona, con un refinamiento. En lugar de utilizar RestTemplate.getForObject(), estoy utilizando RestTemplate.execute() y estoy proporcionando mi propio ResponseExtractor. Esto me lleva a través de la prueba de concepto, pero me imagino que hay una manera más inteligente de determinar el tipo de respuesta del servidor. En este momento estoy asumiendo JSON, pero tendré que admitir XML en algún momento. Gracias por la dirección! –