【发布时间】:2011-12-31 21:31:58
【问题描述】:
我有一个 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 具有唯一名称(在所有枚举中)?
【问题讨论】:
标签: java interface enums enumset