У меня есть приложение для Android, которое загружает данные из веб-источников и отображает их.Я организовал каждый метод API, поддерживаемый этими источниками, в константах enum, разделенных на источники.Допустим, SourceA предоставляет данные о спорте и погоде, а SourceB предоставляет данные о запасах и новостях.
public enum ServiceA implements ServiceMethod {
GET_SPORT(...) {...},
GET_WEATHER(...) {...};
...
}
public enum ServiceB implements ServiceMethod {
GET_STOCK(...) {...},
GET_NEWS(...) {...};
...
}
В каждом классе enum также есть частные члены для работы с API сервиса (разные API для разных источников)
И переменная ServiceMethod
ServiceMethod method;
... // initializing
String cleanAndFancyData = method.queryData(); // e.g.
Нет, мне нужно хранить историю пользователей, поэтому я должен сериализовать и десериализовать переменную ServiceMethod
, а также перечислить все константы из всех перечислений, реализующих этот интерфейс.Сериализация выглядит просто и не подлежит сомнению.
Теперь я просто вручную перебираю перечисления:
Collection<ServiceMethod> allMethods = new ArrayList<ServiceMethod>();
allMethods.addAll(EnumSet.allOf(ServiceA.class));
allMethods.addAll(EnumSet.allOf(ServiceB.class));
Есть ли более чистый и приятный способ для этого?Или мой подход совершенно неверный?Кроме того, есть ли способ гарантировать, что все ServiceMethod
имеют уникальные имена (для всех перечислений)?