黑马程序员技术交流社区

标题: 关于使用内部类代替ifelse [打印本页]

作者: Teemo_Mann    时间: 2014-4-16 23:12
标题: 关于使用内部类代替ifelse
在张老师的视频中,讲到枚举时举到这么一个例子
关于用一个普通类表示一个星期的枚举
  1. class WeekDay{
  2.         private WeekDay(){}
  3.         public final static WeekDay SUN = new WeekDay();
  4.         public final static WeekDay MON = new WeekDay();

  5.         public WeekDay nextDay(){
  6.                         if(this == SUN){
  7.                                 return MON;
  8.                         }
  9.                                 return SUN;
  10.                         }
  11. }
复制代码

改用抽象类和匿名函数
  1. abstract class WeekDay{
  2.         private WeekDay(){}
  3.         public final static WeekDay SUN = new WeekDay(){

  4.                 @Override
  5.                 public WeekDay nextDay() {
  6.                         // TODO Auto-generated method stub
  7.                         return MON;
  8.                 }
  9.                
  10.                
  11.         };
  12.         public final static WeekDay MON = new WeekDay(){

  13.                 @Override
  14.                 public WeekDay nextDay() {
  15.                         // TODO Auto-generated method stub
  16.                         return SUN;
  17.                 }
  18.                
  19.         };

  20.         public abstract WeekDay nextDay();
  21.        
  22. }
复制代码
只是为了修改多个if else就进行修改这个匿名函数,这样写我觉得和原先的差别没有多大,如果单单只是为了方便的话我觉得两段代码写起来还要if else比较方便,是不是这里面还有别的玄机呢







欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2