我需要爲國家和州創建枚舉。關聯枚舉和在泛型中使用
什麼是創建和關聯這些枚舉最合適的方式(如在國家X可以有狀態P,Q,R等)?
如果我有一個泛型類參數與一個國家的類型,我可以宣佈將接受只對特定國家一個國家的方法?
例如像:
public abstract class TestClass <T extends Country> {
public void addState(T.State state);
public List<T.State> getSelectedStates();
}
編輯1:爲了易於維護,我寧願每個國家的獨立國家的枚舉,而不是一個國家的枚舉上百個所有國家的國家。請給出意見。
編輯2:我用以下解決方案解決了與此非常相似的問題。
解決方案:作爲@Bohemian建議,
interface Country { }
interface State<T extends Country> { }
public class Countries {
public static class USA implements Country { }
public static class India implements Country { }
}
enum UsaStateEnum implements State<Countries.USA> {
NY, MA, MD, CA
}
enum IndiaStateEnum implements State<Countries.India> {
DEL, BLR
}
class GenericClass<T extends Country> {
List<State<T>> states;
public void addState(State<T> state) {
if (states == null) {
states = new ArrayList<State<T>>();
}
states.add(state);
}
public List<State<T>> getSelectedStates() {
return states;
}
}
public class NestedEnumTest {
public static void main(String[] args) {
GenericClass<Countries.USA> obj = new GenericClass<Countries.USA>();
obj.addState(UsaStateEnum.MA);
// obj.addState(IndiaStateEnum.DEL); // NOT ALLOWED
List<State<Countries.USA>> states = obj.getSelectedStates();
}
}
非常感謝。能否請您確認下方,如果我的最後一次發言的理解(「你可以,如果你定義爲每一個單獨的類...」)是正確的? 枚舉CountryEnum實現國家{美國,印度} 枚舉UsaStateEnum實現國家{NY,MA} 枚舉IndiaStateEnum實現國家{DEL,BLR} 抽象類的TestClass { 公共void addState(U state); public List getSelectedStates(); } –
Somu
當我想到更多關於它的時候,我實際上更喜歡每個國家都有一個單獨的國家枚舉,而不是單一的國家枚舉與所有國家的數百個州。 – Somu