Но как RestTemplate узнает, как преобразовать элементы списка в экземпляры класса Foo
? Вы пытались запустить код, и он работает, как ожидалось?
Один из способов обойти это - использовать массив в качестве типа ввода. например.
restTemplate.getForObject(restServiceURI, Foo[].class);
Но я не знаю, поддерживается ли это. Если вам действительно нужно десериализовать более сложные типы данных, вам следует подумать об использовании Джексона или Гсона.
С Джексоном вы можете использовать класс ObjectMapper для простой десериализации данных из большинства источников.
String input = ...;
ObjectMapper mapper = new ObjectMapper();
List<Foo> list = mapper.readValue(input, new TypeReference<List<Foo>>(){});
Вышесказанное работает, потому что вы намеренно создаете анонимный класс, который расширяет TypeReference, класс будет помнить свои универсальные типы во время выполнения, и поэтому он может помочь мапперу объектов создавать списки Foo. Для более полного объяснения .