के साथ वर्ग कैसे उत्पन्न करें मैं अपनी कक्षा संरचना को उत्पन्न करने की कोशिश कर रहा हूं।
मैं अपनी वास्तविक संरचना को और अधिक विशिष्ट होने के लिए दिखाऊंगा।टी और सूची <T>
मैं ऑफलाइन मोड समर्थन के साथ आवेदन लिख रहा हूँ, इसलिए मैं Robospice और GreenDao ORM का उपयोग करने में मेरी ETag कैश तंत्र को लागू करने का फैसला किया।
मुझे केवल कैश करने की आवश्यकता है अनुरोध प्राप्त करें।
सबसे पहले मेरी अनुरोधों मेरे मामले में आधार अनुरोध (मेरा नहीं), विस्तार करना चाहिए RetrofitSpiceRequest<T, V>
T is type of return data
V is service type, in my case I am using Retrofit.
समस्या यह है कि वापसी प्रकार डिफ़ॉल्ट रूप से प्रकार नहीं List of T
है और मैं उपवर्ग कि टी की सरणी फैली बनाने की जरूरत वस्तुओं और जो इसे रिटर्न प्रकार के रूप में उपयोग करते हैं।
कुछ इस
public class City {
....
....
....
public static class List extends ArrayList<City> {
.....
.....
}
}
की तरह और वापसी प्रकार के रूप में City.List का उपयोग करें।
लेकिन मैं अपने डीएओ
public class CityDao extends AbstractDao<City, Long> {
}
निम्नलिखित प्रत्येक अनुरोध (GET) मैं अगर यह सर्वर डेटा से अलग कैश डेटा के क्रम में एक सदस्य के रूप में विशिष्ट डीएओ की आवश्यकता में के रूप में घोषित किया है। या यदि कोई कनेक्शन नहीं है तो स्थानीय डेटाबेस से डेटा लोड करें।
यहां समस्या यह है कि टी प्रकार द्वारा उत्पन्न अनुरोध जो अधिकतर सूची है, शहर। मेरे मामले में कुछ वस्तुओं के बारे में बताएं, लेकिन मेरे दाओ द्वारा उत्पन्न किया गया है, उदाहरण के लिए ई प्रकार जो मेरे मामले में शहर है।
मैं की तरह विधि बनाना चाहते हैं इस
public AbastractDao<T,Long> getRequestDao() {
}
लेकिन जहाँ तक मेरी अनुरोध के रूप में वापस City.List, मैं पता नहीं कैसे इस वर्ग generify करने के लिए है, मुझे लगता है कि यह संभव है, लेकिन अब कोई विचार ।
गैर सामान्य दाव विधि के मामले में, मैं इस
@Override
public void insertReceivedData(City.List received) {
mCityDao.insertOrReplaceInTx(received);
}
@Override
public City.List getCachedData() {
if (mFilterMap != null && mFilterMap.size() > 0) {
return (City.List) mCityDao.loadAll();
} else {
WhereCondition[] whereConditions = QueryUtils.convertPropertyMapToConditionalArray(mFilterMap);
return (City.List) mCityDao.queryBuilder().where(whereConditions[0], Arrays.copyOfRange(whereConditions, 1, whereConditions.length)).list();
}
}
की तरह कोड नकल करने प्रत्येक अनुरोध
कृपया में अपने विचारों को साझा किया है।
धन्यवाद।
आप अपनी सेवाओं को स्वचालित रूप से इंजेक्षन और उचित दाव कॉल करना चाहते हैं मैं यह सही समझ में आया? –
हां, लेकिन समस्या यह है कि दाओ को सारदाडो का विस्तार किया जाता है और अधिकांशतः सारदादाओ के रूप में उपयोग किया जाता है जहां टी प्रकार मेरे मामले शहर में तालिका में मैप किया जाता है, लेकिन मुझे शहरों की सूची प्राप्त करने की आवश्यकता होती है, जहां तक अनुरोध ऑब्जेक्ट देता है कक्षा टीआई को कस्टम क्लास बनाना है MyCityList ArrayList बढ़ाता है और यहां समस्या है। –
CROSP