tft每日頭條

 > 科技

 > android注解的作用

android注解的作用

科技 更新时间:2024-10-11 16:06:49

android注解的作用?Android官方不推薦使用枚舉,因為使用枚舉占用内存大,相比于靜态常量Enum會花費兩倍以上的内存因此就有另一種方式來替代枚舉類的使用,那就是@IntDef注解,我來為大家科普一下關于android注解的作用?下面希望有你要的答案,我們一起來看看吧!

android注解的作用(android軟件安全權威指南)1

android注解的作用

Android官方不推薦使用枚舉,因為使用枚舉占用内存大,相比于靜态常量Enum會花費兩倍以上的内存。因此就有另一種方式來替代枚舉類的使用,那就是@IntDef注解。

枚舉的理解

首先談談對枚舉的理解,雖說平時用枚舉不是很多,在某些情況下還是會用到枚舉的。

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;    }     @WeekDays    public int getCurrentDay() {        return currentDay;    }} //方式二@IntDef({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;}

kotlin中使用@IntDef

在kotlin中使用@IntDef注解,發現沒有什麼用,起不到限定作用,仍然可以随便傳入值,測試代碼如下:

@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 = 0        const val MONDAY = 1        const val TUESDAY = 2        const val WEDNESDAY = 3        const val THURSDAY = 4        const val FRIDAY = 5        const val SATURDAY = 6    }} class Test1 {    private var currentDay = WeekDays.SUNDAY    @WeekDays    fun  get():Int = currentDay     fun setCurrentDay(@WeekDays currentDay: Int){        this.currentDay = currentDay    }} fun main(arg:Array<String>){    var test1 = Test1()    test1.setCurrentDay(123)   println(test1.get())}

最終結果輸出123。

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关科技资讯推荐

热门科技资讯推荐

网友关注

Copyright 2023-2024 - www.tftnews.com All Rights Reserved