|
一个模仿 Enum 的类:
public class Weekday {
private Weekday() {}
public static final Weekday MON = new Weekday();
public static final Weekday TUE = new Weekday();
public static final Weekday WEN = new Weekday();
public static final Weekday THU = new Weekday();
public static final Weekday FRI = new Weekday();
public static final Weekday SAT = new Weekday();
public static final Weekday SUN = new Weekday();
public Weekday nextDay() {
if(this == MON)
return TUE;
else if(this == TUE)
return WEN;
else if(this == WEN)
return THU;
else if(this == THU)
return FRI;
else if(this == FRI)
return SAT;
else if(this == SAT)
return SUN;
else
return MON;
}
@Override
public String toString() {
if(this == MON)
return "MON";
else if(this == TUE)
return "TUE";
else if(this == WEN)
return "WEN";
else if(this == THU)
return "THU";
else if(this == FRI)
return "FRI";
else if(this == SAT)
return "SAT";
else
return "SUN";
}
}
看到 nextDay 和 toString 方法里的 多个 If 真的很蛋疼, 可以改为如下实施:
public abstract class Weekday {
private Weekday() {}
public static final Weekday MON = new Weekday(){
@Override
public Weekday nextDay() {
return TUE;
}
@Override
public String toString() {
return "MON";
}
};
public static final Weekday TUE = new Weekday(){
@Override
public Weekday nextDay() {
return WEN;
}
@Override
public String toString() {
return "TUE";
}
};
public static final Weekday WEN = new Weekday(){
@Override
public Weekday nextDay() {
return THU;
}
@Override
public String toString() {
return "WEN";
}
};
public static final Weekday THU = new Weekday(){
@Override
public Weekday nextDay() {
return FRI;
}
@Override
public String toString() {
return "THU";
}
};
public static final Weekday FRI = new Weekday(){
@Override
public Weekday nextDay() {
return SAT;
}
@Override
public String toString() {
return "FRI";
}
};
public static final Weekday SAT = new Weekday(){
@Override
public Weekday nextDay() {
return SUN;
}
@Override
public String toString() {
return "SAT";
}
};
public static final Weekday SUN = new Weekday(){
@Override
public Weekday nextDay() {
return MON;
}
@Override
public String toString() {
return "SUN";
}
};
public abstract Weekday nextDay();
}
看上面就美观多了!
|