Sto provando a generare la mia struttura di classe.
Mostrerò la mia vera struttura per essere più specifica.Come generare classe con T e List <T>
Sto scrivendo applicazioni con supporto modalità offline, così ho deciso di realizzare il mio meccanismo di cache ETag nell'uso Robospice e GreenDao ORM.
Ho bisogno di cache solo GET richieste.
In primo luogo le mie richieste dovrebbero estendersi richiesta di base (non mia), nel mio caso RetrofitSpiceRequest<T, V>
T is type of return data
V is service type, in my case I am using Retrofit.
Il problema è che tipo di ritorno non è List of T
tipi di default e ho bisogno di creare sottoclasse che si estende serie di T oggetti e che lo usano come tipo di ritorno.
Qualcosa di simile
public class City {
....
....
....
public static class List extends ArrayList<City> {
.....
.....
}
}
E utilizzare City.List come tipo di ritorno.
ma ho i miei DAO dichiarato come segue
public class CityDao extends AbstractDao<City, Long> {
}
In ogni richiesta (GET) ho bisogno di avere DAO specifica come membro al fine di dati della cache se diversa dai dati del server. O carica i dati dal database locale se non c'è connessione.
Il problema qui è la richiesta generata dal tipo T che è principalmente lista, CityList nel mio caso, di alcuni oggetti, ma il mio dao è generato da, ad esempio, il tipo E che è Città nel mio caso.
Voglio creare metodo come questo
public AbastractDao<T,Long> getRequestDao() {
}
Ma per quanto riguarda la mia richiesta ritorna City.List, non ho idea di come generify questa classe, ritengo che sia possibile, ma ora senza idee .
In caso di metodo di dao non generica, devo duplicare il codice come questo
@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();
}
}
In ogni richiesta
prega di condividere le vostre idee.
Grazie.
Ho capito questo diritto, si desidera che i servizi per iniettare e chiamare il corretto Dao automaticamente? –
Sì, ma il problema è che Dao è estendere il Salto iniziale e principalmente utilizzato come AbstractDao dove T è il tipo che è mappato al tavolo nel mio caso città, ma ho bisogno di ottenere l'elenco delle città, per quanto riguarda la richiesta restituisce oggetto di classe TI deve creare una classe personalizzata MyCityList estende ArrayList e qui è il problema. –
CROSP