我建议您寻找一种不同的方法来实现这一目标。如果您能想出一种将国家“嵌套”在国家/地区中的方法,那么您将遇到没有为所有国家提供单一类型的问题。您将无法拥有state
可以分配美国州或阿根廷州的变量。
这是您可以考虑的替代模型:
public interface State {
}
private enum UnitedStates implements State {
CALIFORNIA, ...;
}
private enum ArgentinaStates implements State {
BUENOS_AIRES, ...;
}
public enum Country {
SRILANKA(),
US(UnitedStates.values()),
ARGENTINA(ArgentinaStates.values());
Country(State... states) {
this.states = Arrays.toList(states);
}
private final List<State> states;
public List<State> getStates() {
return states;
}
}
然后你可以这样做:
State state;
state = ArgentinaStates.BUENOS_AIRES;
state = UnitedStates.CALIFORNIA;