Color:數組
public enum Color{ RED,BLUE,BLACK,YELLOW,GREEN }
Color字節碼代碼: :fa-exclamation-circle:枚舉值都是public static final的,枚舉值最好所有大寫ide
final enum hr.test.Color { // 全部的枚舉值都是類靜態常量 public static final enum hr.test.Color RED; public static final enum hr.test.Color BLUE; public static final enum hr.test.Color BLACK; public static final enum hr.test.Color YELLOW; public static final enum hr.test.Color GREEN; private static final synthetic hr.test.Color[] ENUM$VALUES; }
//構造枚舉值:RED(255, 0, 0) Color color=Color.RED;
1.ordinal()方法: 返回枚舉值在枚舉類種的順序。這個順序根據枚舉值聲明的順序而定,0開始遞增+1 2.compareTo()方法: 返回的是兩個枚舉值的順序之差。(兩個枚舉值必須是同一枚舉類,不然ClassCastException) 3.values()方法: 靜態方法,返回一個包含所有枚舉值的數組。 Color[] colors=Color.values();
Encodable:爲code值變動提供接口this
Decoder:變換code值爲枚舉變量名code
FileType:枚舉類對象
直接上代碼:繼承
FileType :接口
public enum FileType implements Encodable < String > { /** 文件 */ FILE( "0", "code.value.filetype.FILE" ), /** 文件夾 */ FOLDER( "1", "code.value.filetype.FOLDER" ), ; //values():表示獲得所有的枚舉內容,而後以對象數組的形式用foreach輸出 private static final Decoder < String, FileType > decoder = Decoder.create( values() ); /** code值 */ //0 //1 private final String code; /** 屬性文件的key值 */ //code.value.filetype.FILE //code.value.filetype.FOLDER private final String propertyKey; private FileType( String code, String propertyKey ) { this.code = code; this.propertyKey = propertyKey; } @Override public String encode() { return code; } @Override public String propertyKey() { return propertyKey; } /** * 將指定的code變換爲對應的值{@link FileType}。 * * @param code code * @return FileType的值不存在的時候返回null。 */ public static FileType decode( final String code ) { FileType type = decoder.decode( code ); return type; } /** * 取得code對應的code名稱 * * @param code code * @return code名稱 */ public static String getName( final String code ) { FileType type = decode( code ); // ....可擴展 return type.propertyKey(); } }
Encodable:ci
public interface Encodable < T extends Serializable > { /** * 取得code值 * * @return code值 */ public T encode(); /** * 取得屬性文件的key值 * * @return 屬性文件的key值 */ public String propertyKey(); }
Decoder:get
public class Decoder < K extends Serializable, V extends Encodable < K >> { private final Map < K, V > map; /** * @param values 變換值list * @exception IllegalArgumentException code值重複 */ private Decoder( V[] values ) { map = new HashMap < K, V >( values.length ); for ( V val : values ) { V old = map.put( val.encode(), val ); // code值重複 if ( old != null ) { throw new IllegalArgumentException( "重複的code: " + val ); } } } /** * 變換code值 * * @param code code值 * @return 變換值 */ public V decode( K code ) { return map.get( code ); } /** * class做成 * * @param values 變換值list * @return Decoder Class */ public static < K1 extends Serializable, V1 extends Encodable < K1 >> Decoder < K1, V1 > create( V1[] values ) { return new Decoder < K1, V1 >( values ); } }
FileType.FILE----------------: FILEit
FileType.FILE.encode()-------: 0
FileType.decode( "0" )-------: FILE
FileType.FILE.propertyKey()--: code.value.filetype.FILE