我有一个 Android 应用程序,它从 Web 源加载数据并显示它。我将这些源支持的每个 API 方法组织在每个源拆分的枚举常量中。假设 SourceA 提供体育和天气数据,SourceB 提供股票和新闻数据。
public enum ServiceA implements ServiceMethod {
GET_SPORT(...) {...},
GET_WEATHER(...) {...};
...
}
public enum ServiceB implements ServiceMethod {
GET_STOCK(...) {...},
GET_NEWS(...) {...};
...
}
每个枚举类也有私有成员来处理服务 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
都有唯一的名称(在所有枚举中)?