Java编程技巧

论坛 期权论坛 脚本     
匿名技术用户   2021-1-2 00:22   34   0

一个模仿 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();

}

看上面就美观多了!

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:7942463
帖子:1588486
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP