Używam usługi Spring's RestTemplate
do nawiązywania połączeń z usługą sieciową REST. Jednym z tych wywołań jest zwrócenie listy obiektów określonego typu. Metody RestTemplate
wymagają podania argumentu klasy w celu wskazania oczekiwanego typu zwrotu.Jak uniknąć ostrzeżeń kompilatora, gdy ogólne informacje o typie są niedostępne?
// restTemplate is type org.springframework.web.client.RestTemplate
URI restServiceURI = new URI("http://example.com/foo")
restTemplate.getForObject(restServiceURI, List<Foo>.class);
Oczywiście to się nie kompiluje. Nie można uzyskać statycznej właściwości .class
, gdy podajesz taki argument typu. Kod kompiluje się po usunięciu argumentu typu, ale generuje ostrzeżenie kompilatora rawtypes
.
Moje pytanie jest proste. Czy utknąłem z tłumieniem ostrzeżenia kompilatora lub czy istnieje lepszy sposób kodowania tego?
Jackson jest na ścieżce klas, a Spring 3.x używa go automatycznie do wysyłania/rozpakowywania tych strumieni. Miałem nadzieję, że wykorzystam to na swoją korzyść, ale wydaje się, że muszę to zrobić na niższym poziomie. Jestem zaskoczony, że Spring nie zapewnia łatwego sposobu obsługi zwrotów Collection, podobnie jak w przypadku innych klas szablonów. –
Ta metoda działa z udoskonaleniem. Zamiast używać RestTemplate.getForObject() używam RestTemplate.execute() i dostarczam własny ResponseExtractor. To prowadzi mnie przez dowód koncepcji, ale wyobrażam sobie, że istnieje bardziej sprytny sposób określenia typu odpowiedzi z serwera. W tej chwili zakładam JSON, ale w pewnym momencie będę musiał obsługiwać XML. Dzięki za wskazówki! –