DON'T USE ENUM, SO WE NEED ?

@Annotation

在Java,,enum是我們經常使用幫助我們自動編號,避免錯誤發生。

但是在Android中,使用enum不僅佔app的容量空間,執行後還會需要額外的記憶體空間。

好在Android提供了 Annotation 可以幫助我們解決這樣的問題,也可讓compiler後,不需額外的記憶體空間。在編輯時若是,若是編譯錯誤也會出現提醒和警告。

影片上的範例,說明 IntDef和StringDef 這兩個Annotation可以註明,此class只能用的常數。

網路上找到的其他範例:

在一個文件中如下聲明

public class AppConstants {
     public static final int STATE_OPEN = 0;
     public static final int STATE_CLOSE = 1;
     public static final int STATE_BROKEN = 2;
     @IntDef({STATE_OPEN, STATE_CLOSE, STATE_BROKEN})
     @Retention(RetentionPolicy.SOURCE)   //告知編譯器如何處理 annotaion
     public @interface DoorState {} 
}

然後設置書寫這樣的方法

private void setDoorState(@AppConstants.DoorState int state) {
     //some code 
}

當調用方法時只能使用STATE_OPEN,STATE_CLOSE和STATE_BROKEN。使用其他值會導致編譯提醒和警告。

延伸閱讀

results matching ""

    No results matching ""