Ho il metodo List<Foo> getFoos()
che recupera i dati dal server remoto e li restituisce.È accettabile restituire unmodifiableList o dovrei restituire l'array?
Ovviamente, l'utente non deve modificare il numero di elementi dell'elenco perché otterrà dati non sincronizzati con i dati sul server (e se desidera modificare il numero di elementi ha metodi speciali come addFoo()
).
Il primo approccio è stato restituire l'array e modificare la firma del metodo su Foo[] getFoos()
. Ma è più comune in Java e più conveniente per l'utente operare con le raccolte, quindi ho cambiato la firma in List<Foo> getFoos()
. Questo metodo restituisce sempre
Collections.unmodifiableList (originalList)
Così, quando l'utente tenta di cambiare la lista che otterrà RuntimeException.
Ci sono raccomandazioni riguardo la progettazione di API in casi simili?
Mi interessa se questo confonde gli utenti e fa pensare che possano modificare l'elenco e tutte le operazioni di sincronizzazione verranno eseguite automaticamente (sincronizzazione con server, intendo). – Roman
Ovviamente, dopo la prima RuntimeException tutti gli utenti confusi comprenderanno sicuramente che non possono farlo in modo così semplice :) – Roman
@Roman Nella documentazione è sufficiente che venga restituito un elenco non modificabile. – Poindexter