java基础系列之枚举<二>

在think in Java 上看到 enum的一个对我来说的新用法,是我之前从来没有使用过的, 大概意思是,使用枚举分类/分组,其实也就是普通class的继承用法,比如: 人 --> 学生 ; 人 --> 工人 ; 人 --> 教师 ; 等 .

大概实现方式如下:

  1. 将多个子类放在一个接口中;
  2. 每个子类实现这个接口;
interface A {
   enum B implements A {
      E1, E2,E3 ; 
  }

  enum F implements A {
    Ea,Eb,Ec ;
  }
}

如上,枚举B\F 在外界看来都是类型A ; 如此也就达到了统一参数的目的和使用枚举分类间接实现了继承;


说明:
我们都知道,枚举enum 在内部实现为继承Enum类, java 不支持多继承, 所以实现java多继承的唯一方法是实现接口.

示例:


public interface AliEnum {    
//元素解析    
enum Element implements AliEnum {       
 LICENSENO {            
@Override            
public String getValue() {                
return "LicenseNO" ;            
}        
},        
ENGINNO {            
//            
@Override            
public String getValue() {                
return "EnginNo" ;           
}        
},
VIN {            
@Override            
public String getValue() {                
return "Vin" ;            
}        
};
        /**         
           * 

获取元素名

* @return */ public abstract String getValue() ; } /** *

封装错误消息.

* #author palm */ enum Error implements AliEnum { //自定义错误 SYSERRORCUSTOM { @Override public Entry getEntry() { return new Entry("123456","你xxx") ; } @Override public Entry getEntry(String errorCode, String errorMsg) { return new Entry(errorCode,errorMsg) ; } } ; // error box public class Entry { String errorCode ,errorMsg ; Entry(String errorCode,String errorMsg) { this.errorCode = errorCode ; this.errorMsg = errorMsg ; } public String getErrorCode() { return this.errorCode ; } public String getErrorMsg() { return this.errorMsg ; } //change Msg public void setErrorMsg(String errorMsg) { this.errorMsg = errorMsg; } } /** *

获取预定消息.

* @return */ public abstract Entry getEntry() ; /** *

自定义

* @param errorCode * @param errorMsg * @return */ public abstract Entry getEntry(String errorCode,String errorMsg) ; } }

如此,不管是Element 还是 Error 对于第三方来说都是AliEnum类型.

在粘贴代码为什么不会保留格式呢?

你可能感兴趣的:(java基础系列之枚举<二>)