DON'T USE ENUM, SO WE NEED ?
@Annotation
在Java,,enum是我們經常使用幫助我們自動編號,避免錯誤發生。
但是在Android中,使用enum不僅佔app的容量空間,執行後還會需要額外的記憶體空間。
好在Android提供了 Annotation 可以幫助我們解決這樣的問題,也可讓compiler後,不需額外的記憶體空間。在編輯時若是,若是編譯錯誤也會出現提醒和警告。
影片上的範例,說明 IntDef和StringDef 這兩個Annotation可以註明,此class只能用的常數。
- IntDef(https://developer.android.com/reference/android/support/annotation/IntDef.html)
- StringDef(https://developer.android.com/reference/android/support/annotation/StringDef.html)
網路上找到的其他範例:
在一個文件中如下聲明
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。使用其他值會導致編譯提醒和警告。
延伸閱讀