Java编程技巧

来源:互联网 发布:akka java教程 编辑:程序博客网 时间:2024/05/29 15:35

一个模仿 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;elsereturn MON;}@Overridepublic 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";elsereturn "SUN";}}

看到 nextDay 和 toString 方法里的 多个 If 真的很蛋疼, 可以改为如下实施:

public abstract class Weekday {private Weekday() {}public static final Weekday MON = new Weekday(){@Overridepublic Weekday nextDay() {return TUE;}@Overridepublic String toString() {return "MON";}};public static final Weekday TUE = new Weekday(){@Overridepublic Weekday nextDay() {return WEN;}@Overridepublic String toString() {return "TUE";}};public static final Weekday WEN = new Weekday(){@Overridepublic Weekday nextDay() {return THU;}@Overridepublic String toString() {return "WEN";}};public static final Weekday THU = new Weekday(){@Overridepublic Weekday nextDay() {return FRI;}@Overridepublic String toString() {return "THU";}};public static final Weekday FRI = new Weekday(){@Overridepublic Weekday nextDay() {return SAT;}@Overridepublic String toString() {return "FRI";}};public static final Weekday SAT = new Weekday(){@Overridepublic Weekday nextDay() {return SUN;}@Overridepublic String toString() {return "SAT";}};public static final Weekday SUN = new Weekday(){@Overridepublic Weekday nextDay() {return MON;}@Overridepublic String toString() {return "SUN";}};public abstract Weekday nextDay();}

看上面就美观多了!


原创粉丝点击