java – 处理实现公共接口的枚举(迭代,反序列化)
发布时间:2020-12-15 02:29:20 所属栏目:Java 来源:网络整理
导读:我有一个 Android应用程序,可以从Web源加载数据并显示它.我组织了每个API方法,这些源代码支持在每个源分割的枚举常量中.比方说,SourceA提供体育和天气数据,SourceB提供股票和新闻数据. public enum ServiceA implements ServiceMethod { GET_SPORT(...) {...
我有一个
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)); 这有更清洁,更好的方式吗?或者我的做法完全错了? 解决方法
您可以使用
strategy pattern将ServiceA和ServiceB组合到一个服务中.
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |