【问题标题】:Dealing with enums implementing common interface (iterate, deserialize)处理实现通用接口的枚举(迭代、反序列化)
【发布时间】: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


    【解决方案1】:

    您可以使用strategy patternServiceAServiceB 组合成一个Service

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多