文章插圖

文章插圖
Android官方不推薦使用枚舉,因為使用枚舉占用內存大,相比于靜態常量Enum會花費兩倍以上的內存 。因此就有另一種方式來替代枚舉類的使用,[email protected]
枚舉的理解
首先談談對枚舉的理解,雖說平時用枚舉不是很多,在某些情況下還是會用到枚舉的 。
1、枚舉是某個類的有限集合,它的對象個數不可由程序員增減,它的對象在一個枚舉類生成的時候已經確定 。
2、枚舉可以避免程序調用者使用了系統規定之外的變量,造成未知錯誤 。比如程序需要使用第三方SDK,傳入了SDK未能處理的變量,造成SDK異常錯誤,如果使用了枚舉,就可在編碼時發現傳入錯誤參數 。
@IntDef注解的使用
添加依賴:
implementation 'com.android.support:support-annotations:26.1.0'使用示例://方式一public class Test {//先定義 常量public static final int SUNDAY = 0;public static final int MONDAY = 1;public static final int TUESDAY = 2;public static final int WEDNESDAY = 3;public static final int THURSDAY = 4;public static final int FRIDAY = 5;public static final int SATURDAY = 6;//用 @IntDef "包住" 常量;// @Retention 定義策略// 聲明構造器@IntDef({SUNDAY, MONDAY,TUESDAY,WEDNESDAY,THURSDAY,FRIDAY,SATURDAY})@Retention(RetentionPolicy.SOURCE)public @interface WeekDays {}@WeekDays private int currentDay = SUNDAY;public void setCurrentDay(@WeekDays int currentDay) {this.currentDay = currentDay;}@WeekDayspublic int getCurrentDay() {return currentDay;}} [email protected]({SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY})@Retention(RetentionPolicy.SOURCE)public @interface WeekDays {int SUNDAY = 0;int MONDAY = 1;int TUESDAY = 2;int WEDNESDAY = 3;int THURSDAY = 4;int FRIDAY = 5;int SATURDAY = 6;}[email protected][email protected],發現沒有什么用,起不到限定作用,仍然可以隨便傳入值,測試代碼如下:
@IntDef(WeekDays.SUNDAY,WeekDays.MONDAY,WeekDays.TUESDAY,WeekDays.WEDNESDAY,WeekDays.THURSDAY,WeekDays.FRIDAY,WeekDays.SATURDAY)@Retention(RetentionPolicy.SOURCE)annotation class WeekDays {companion object {const val SUNDAY = 0const val MONDAY = 1const val TUESDAY = 2const val WEDNESDAY = 3const val THURSDAY = 4const val FRIDAY = 5const val SATURDAY = 6}} class Test1 {private var currentDay = WeekDays.SUNDAY@WeekDaysfunget():Int = currentDayfun setCurrentDay(@WeekDays currentDay: Int){this.currentDay = currentDay}} fun main(arg:Array<String>){var test1 = Test1()test1.setCurrentDay(123)println(test1.get())}【android注解的原理 android注解框架】最終結果輸出123 。- matlab中最小二乘法擬合曲線 matlab曲線擬合的最小二乘法
- 7寸的手機平板 7寸平板多少錢
- 相機內存卡恢復刪除文件 相機內存卡刪除的照片還能找回來嗎
- 銷量高的手機排行榜 國內銷量最好手機排行榜
- dll文件是什么語言寫的 dll用什么語言
- 我的世界boss指令大全手機 我的世界boss召喚大全都有哪些boss
- 熱心的小青蛙 熱心的小青蛙 繪本
- 我的世界 仙人掌怎么種 我的世界仙人掌能種嗎
- 向日葵下的小熊 向日葵下的小熊圖片
- 愛說大話的青蛙的道理 愛說大話的青蛙我想對青蛙說什么
