मैं एक आरईएसटी वेब सेवा के खिलाफ कॉल करने के लिए स्प्रिंग के RestTemplate
का उपयोग कर रहा हूं। इनमें से एक कॉल एक निश्चित प्रकार की वस्तुओं की एक सूची वापस करना है। RestTemplate
विधियों की आवश्यकता है कि अपेक्षित रिटर्न प्रकार को इंगित करने के लिए कक्षा तर्क प्रदान किया जाए।सामान्य प्रकार की जानकारी अनुपलब्ध होने पर मैं कंपाइलर चेतावनियों से कैसे बचूं?
// restTemplate is type org.springframework.web.client.RestTemplate
URI restServiceURI = new URI("http://example.com/foo")
restTemplate.getForObject(restServiceURI, List<Foo>.class);
जाहिर है, यह संकलित नहीं होता है। जब आप उस तरह के तर्क तर्क की आपूर्ति करते हैं तो आपको एक स्थिर .class
संपत्ति नहीं मिल सकती है। जब मैं टाइप तर्क को हटाता हूं, तो कोड संकलित करता है, लेकिन यह rawtypes
संकलक चेतावनी उत्पन्न करता है।
मेरा प्रश्न सरल है। क्या मैं संकलक चेतावनी दबाने के साथ अटक गया हूं या इसके लिए कोड करने का एक क्लीनर तरीका है?
जैक्सन क्लासपाथ पर है, और स्प्रिंग 3.x स्वचालित रूप से उन धाराओं को मार्शल/अनमशेल करने के लिए उपयोग करता है। मैं अपने लाभ के लिए इसका लाभ उठाने की उम्मीद कर रहा था, लेकिन ऐसा लगता है कि मुझे इसे निम्न स्तर पर करने की ज़रूरत है। मुझे आश्चर्य है कि स्प्रिंग ने अन्य टेम्पलेट वर्गों के साथ संग्रह रिटर्न को संभालने का एक आसान तरीका प्रदान नहीं किया है। –
यह विधि एक परिष्करण के साथ काम करता है। RestTemplate.getForObject() का उपयोग करने के बजाय मैं RestTemplate.execute() का उपयोग कर रहा हूं और अपना खुद का ResponseExtractor प्रदान कर रहा हूं। यह मुझे अवधारणा के सबूत के माध्यम से प्राप्त करता है, लेकिन मुझे लगता है कि सर्वर से प्रतिक्रिया प्रकार निर्धारित करने के लिए एक और चालाक तरीका है। अभी मैं JSON मान रहा हूं, लेकिन मुझे किसी बिंदु पर एक्सएमएल का समर्थन करने की आवश्यकता होगी। दिशा के लिए धन्यवाद! –