我有一个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
都有唯一的名称(在所有枚举中)?