public enum E {
A,
B;
public final static int A_ID = 1;
public final static int B_ID = 2;
public final static int NONE_ID = 0;
public int getId() {
switch(this) {
case A:
return A_ID;
case B:
return B_ID;
default:
return NONE_ID;
}
}
public static int getNoneId() {
return NONE_ID;
}
public E getById(int id) {
switch(id) {
case A_ID:
return A;
case B_ID:
return B;
default:
return null;
}
}
}
public class C {
private E e = E.A;
private int eId = e.getId();
public E getE() {
fixE();
return e;
}
public void setE(E e) {
this.e = e;
fixEId();
}
public int getEId() {
fixEId();
return eId;
}
public void setEId(int id) {
eId = id;
fixE();
}
private void fixE() {
e = E.getById(eId);
}
private void fixEId() {
if(e!=null) eId = e.getId();
else eId = E.getNoneId();
}
} |