2011-11-18 47 views
4

我有一個Android應用程序,它從Web資源加載數據並顯示它。我組織了各種源代碼支持的API方法。比方說,SourceA提供體育和天氣數據,SourceB提供股票和新聞數據。處理實現通用接口的枚舉(迭代,反序列化)

public enum ServiceA implements ServiceMethod { 
    GET_SPORT(...) {...}, 
    GET_WEATHER(...) {...}; 
    ... 
} 

public enum ServiceB implements ServiceMethod { 
    GET_STOCK(...) {...}, 
    GET_NEWS(...) {...}; 
    ... 
} 

每個枚舉類也有私有成員應對服務API(用於differenc來源不同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具有唯一的名稱(跨所有枚舉)?

+0

對於'EnumSet',+1。 – trashgod

回答