实现思路:通过递归调用实现枚举限定命名空间
枚举类:Type
public enum Type {
China(null, "中国"), Chongqing(China, "重庆"), Yuzhongqu(Chongqing, "渝中区");
private Type parent;
private String area;
private Type(Type parent, String area) {
this.parent = parent;
this.area = area;
}
public Type getParent() {
return parent;
}
public void setParent(Type parent) {
this.parent = parent;
}
public String getArea() {
return area;
}
public void setArea(String area) {
this.area = area;
}
}
递归调用实现命名空间限定
public class TestEnumExtend {
public static void main(String[] args) {
String wholeName = new TestEnumExtend().getTotalAreaName(Type.Yuzhongqu);
System.out.println(wholeName);//中国重庆渝中区
}
private String getTotalAreaName(Type type) {
Type parent = type.getParent();
if (parent == null) {
return type.getArea();
} else {
//递归调用
return getTotalAreaName(parent)+type.getArea();
}
}
}