关联枚举和在泛型中使用

我需要为国家和州创建枚举。关联枚举和在泛型中使用

  1. 什么是创建和关联这些枚举最合适的方式(如在国家X可以有状态P,Q,R等)?

  2. 如果我有一个泛型类参数与一个国家的类型,我可以宣布将接受只对特定国家一个国家的方法?

例如像:

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();

}

}

回答:

要回答第1部分,您可以定义两个枚举,其中一个参考,另外,像这样:

public enum State { 

A, B, C, D, E

}

public enum Country {

USA(State.A, State.B),

UK(State.C, State.D);

private final List<State> states;

Country(State... states) {

this.states = Arrays.asList(states);

}

public List<State> getStates() {

return states;

}

}

要回答第2部分,“无” - 有没有办法限制的情况下,特定的类到子集。

你可以,如果你定义为每个国家和它的美国独立枚举单独的一类,但是这似乎并不像一个好主意。

回答:

您可以枚举实现这样的接口:从实现接口enum■不要支持继承不过也

public enum MyEnum implements MyInterface<MyType> { 

// ...

}

除了如果你希望在你的enum中有共同的功能,你总是可以编写一些策略 o投入他们。

以上是 关联枚举和在泛型中使用 的全部内容, 来源链接: utcz.com/qa/266338.html

回到顶部