Tôi đang sử dụng số RestTemplate
của Spring để thực hiện cuộc gọi đối với dịch vụ web REST. Một trong các cuộc gọi này là trả về một danh sách các đối tượng thuộc một loại nhất định. Các phương thức RestTemplate
yêu cầu một đối số lớp được cung cấp để biểu thị kiểu trả về dự kiến.Làm cách nào để tránh cảnh báo trình biên dịch khi thông tin loại chung không khả dụng?
// restTemplate is type org.springframework.web.client.RestTemplate
URI restServiceURI = new URI("http://example.com/foo")
restTemplate.getForObject(restServiceURI, List<Foo>.class);
Rõ ràng, điều này không biên dịch. Bạn không thể nhận được thuộc tính tĩnh .class
khi bạn cung cấp đối số kiểu như vậy. Mã biên dịch khi tôi loại bỏ đối số kiểu, nhưng tạo ra cảnh báo trình biên dịch rawtypes
.
Câu hỏi của tôi rất đơn giản. Tôi có bị mắc kẹt với việc ngăn chặn cảnh báo trình biên dịch hoặc có cách dọn dẹp mã cho việc này không?
Jackson đang ở trên classpath và Spring 3.x sử dụng nó tự động để marshall/unmarshall những luồng đó. Tôi đã hy vọng tận dụng được lợi thế của mình, nhưng có vẻ như tôi cần phải làm điều này ở mức thấp hơn. Tôi chỉ ngạc nhiên rằng Spring đã không cung cấp một cách dễ dàng để xử lý Collection trả về giống như với các lớp mẫu khác. –
Phương pháp này hoạt động, với một sàng lọc. Thay vì sử dụng RestTemplate.getForObject() tôi đang sử dụng RestTemplate.execute() và cung cấp ResponseExtractor của riêng tôi. Điều này giúp tôi vượt qua bằng chứng về khái niệm, nhưng tôi tưởng tượng có một cách thông minh hơn để xác định loại phản hồi từ máy chủ. Ngay bây giờ tôi giả sử JSON, nhưng tôi sẽ cần hỗ trợ XML tại một số điểm. Cảm ơn sự chỉ đạo! –