编程语言
首页 > 编程语言> > 张孝祥java高新技术 --- jkd1.5 新特性 -- 精华总结

张孝祥java高新技术 --- jkd1.5 新特性 -- 精华总结

作者:互联网

1. 抽象方法的使用

  如果一个方法中大量出现if语句, 那么, 就应该考虑使用抽象来处理. 如下例:

package com.lxl;

public class Weekend {
    
    
    //周日
    public static Weekend SUN = new Weekend();
    //周一
    public static Weekend MON = new Weekend();
    //周二
    public static Weekend TUE = new Weekend();
    //周三
    public static Weekend WES = new Weekend();
    //周四
    public static Weekend TUR = new Weekend();
    //周五
    public static Weekend FRI = new Weekend();
    //周六
    public static Weekend SAR = new Weekend();
    
    /*
     * 有一个if语句用来判断, 当前日期的下一个日期是星期几. 
     */
    public Weekend nextDay(Weekend day){
        if(day == SUN) {
            return MON;
        }else if(day == MON){
            return TUE;
        }else if(day == TUE){
            return WES;
        }else if(day == WES){
            return TUR;
        }else if(day == TUR){
            return FRI;
        }else if(day == FRI){
            return SAR;
        }else if(day == SAR){
            return SUN;
        }else{
            return null;
        }
    }
    
    public static void main(String[] args) {
        Weekend sun = Weekend.SUN;
        sun.nextDay(sun);
        
        
    }

}

  在这个方法中, 我定义了一周七天. 如果我想知道明天是星期几, 那么我需要写一个if语句, 大量的 if语句来判断, 明天是星期几. 当程序中出现大量的if语句的时候, 就要想到这样的程序不完美, 需要优化. 比如, 我现在有星期八了, 那么你出来需要添加星期八, 还需要修改if语句. 

  使用抽象来代替if语句.是一个好办法.

  修改后的方法如下: 定义了一个抽象方法nextDay

package com.lxl;

public abstract class Weekend {
    
    
    //周日
    public static Weekend SUN = new Weekend(){
        @Override
        public Weekend nextDay(Weekend day) {
            return MON;
        }
    };
    //周一
    public static Weekend MON = new Weekend(){
        @Override
        public Weekend nextDay(Weekend day) {
            return TUE;
        }
    };
    //周二
    public static Weekend TUE = new Weekend(){
        @Override
        public Weekend nextDay(Weekend day) {
            return WES;
        }
    };
    //周三
    public static Weekend WES = new Weekend(){
        @Override
        public Weekend nextDay(Weekend day) {
            return TUR;
        }
    };
    //周四
    public static Weekend TUR = new Weekend(){
        @Override
        public Weekend nextDay(Weekend day) {
            return FRI;
        }
    };
    //周五
    public static Weekend FRI = new Weekend(){
        @Override
        public Weekend nextDay(Weekend day) {
            return SAR;
        }
    };
    //周六
    public static Weekend SAR = new Weekend(){
        @Override
        public Weekend nextDay(Weekend day) {
            return SUN;
        }
    };
    
    /*
     * 当有大量的if语句时, 要考虑如何优化
     */
    /*public Weekend nextDay(Weekend day){
        if(day == SUN) {
            return MON;
        }else if(day == MON){
            return TUE;
        }else if(day == TUE){
            return WES;
        }else if(day == WES){
            return TUR;
        }else if(day == TUR){
            return FRI;
        }else if(day == FRI){
            return SAR;
        }else if(day == SAR){
            return SUN;
        }else{
            return null;
        }
    }*/
    
    //定义一个抽象方法
    public abstract Weekend nextDay(Weekend day);
    
    public static void main(String[] args) {
        Weekend sun = Weekend.SUN;
        sun.nextDay(sun);
        
        
    }

}

  采用抽象方法定义nextDay, 就是可以将if..else转换为独立的类.

  这样做的好处是, 一旦有了星期八, 那么只需要定义星期八这个常量就好了, 不用修改其他地方.

 2. 枚举 

 

 

 

 3. 反射

 

 

 

 

 

 

 

   

标签:java,--,class,day,---,枚举,return,Weekend,public
来源: https://blog.51cto.com/u_15091061/2856399