Próbuję zaimplementować bezpieczny heterogeniczny pojemnik do przechowywania list heterogenicznych obiektów.Wpisz bezpieczny, heterogeniczny wzorzec kontenera, aby przechowywać listy pozycji.
Widziałem kilka egzaminów bezpiecznego typu heterogenicznego typu kontenera (link), ale wszystkie z nich przechowują pojedynczy obiekt danego typu.
Mam tryed do wdrożenia go w następujący sposób:
public class EntityOrganizer {
private Map<Class<?>, List<Object>> entityMap = new HashMap<Class<?>, List<Object>>();
public <T> List<T> getEntities(Class<T> clazz) {
return entityMap.containsKey(clazz) ? entityMap.get(clazz) : Collections.EMPTY_LIST;
}
private <T> void addEntity(Class<T> clazz, T entity) {
List<T> entityList = (List<T>) entityMap.get(clazz);
if(entityList == null) {
entityList = new ArrayList<T>();
entityMap.put(clazz, (List<Object>) entityList);
}
entityList.add(entity);
}
}
Ale problem jest ten kod jest pełna niekontrolowanych odlewów. Czy ktoś może pomóc w lepszym sposobie realizacji tego?
Dziękujemy
byłoby bardziej odpowiednie dla '' entityMap' się Mapa, Lista >> 'ponieważ wartości są nie' 'Lista
To nie jest odpowiedź na twoje pytanie, ale rozważ użycie Guava Multimap zamiast mapy. –
Zaproponowałem API 'ClassToInstanceMultimap' w [tej odpowiedzi] (https://stackoverflow.com/a/45260466/113632), po typach" Multimap "i" ClassToInstanceMap "Guavy. – dimo414