Android @ 註解

@註解

1.java.lang包下

    //表明重寫的是父類方法,檢查方法名是否寫錯
    @Override
    //被棄用的API,不贊成使用
    @Deprecated

    //告訴編譯器Lint,對警告保持靜默
    //deprecation   使用了不贊成使用的類或方法時的警告
    //unchecked     執行了未檢查的轉換時的警告
    //fallthrough   當 Switch 程序塊直接通往下一種情況而沒有 Break 時的警告。
    //path          在類路徑、源文件路徑等中有不存在的路徑時的警告。
    //serial        當在可序列化的類上缺少 serialVersionUID 定義時的警告。
    //finally       任何 finally 子句不能正常完成時的警告。
    //all           關於以上所有情況的警告。
    @SuppressWarnings("deprecation")
    //函數式接口,只定義了一個方法,可用Lambda
    @FunctionalInterface
    //抑制編譯器警告,只能用在參數長度可變的方法或構造方法上,且方法必須聲明爲static或final,否則會出現編譯錯誤
    @SafeVarargs

2.java.lang.annotation包下

    //javadoc文檔化,使其成爲API一部分
    @Documented

    //註解代碼在何時生效
    @Retention(RetentionPolicy.CLASS)
    public enum RetentionPolicy {
        CLASS,  //編譯class文件時生效
        RUNTIME,    //運行時生效
        SOURCE  //只在源碼中生效,便宜是拋棄
    }

    //適用範圍
    @Target(ElementType.TYPE)
    public enum ElementType {
        //類, 接口 (包括註釋類型), 或 枚舉 聲明
        TYPE,
        //字段(包括枚舉常量)
        FIELD,
        //方法
        METHOD,
        //正式的參數聲明
        PARAMETER,
        //構造函數
        CONSTRUCTOR,
        //局部變量聲明
        LOCAL_VARIABLE,
        //註釋類型聲明
        ANNOTATION_TYPE,
        //包聲明
        PACKAGE,
        //類型參數聲明
        TYPE_PARAMETER,
        //使用的類型
        TYPE_USE
    }

    //標記父類方法可以被子類繼承
    @Inherited

3.android.annotation包下

    //不管minSdkVersion是多少,運行在制定API,最好判斷API進行老舊版本兼容
    @TargetApi(23)
    //由於用了高版本API,以此屏蔽android lint錯誤
    @SuppressLint("NewApi")

4.android.support.annotation包下

 //方法返回值不能爲空,參數不能爲空
    @NonNull
    //允許爲空
    @Nullable
    //檢查返回值是否被消費,若沒用上則報錯
    @CheckResult
    //被標記的類和方法不會被混淆
    @Keep
    //指定參數值的範圍
    @Size(min = 2,max = 50)
    //集合不能爲空
    @Size(min = 1)
    //字符串最大長度爲30
    @Size(max = 30)
    //指定參數範圍
    @IntRange(from = 5,to = 55)
    @FloatRange
    //標記的方法,字段,類在測試時可見
    @VisibleForTesting
    //指定運行的線程
    @MainThread
    @UiThread
    @WorkerThread
    @BinderThread
    //代碼需要在更高的API版本上運行,和@TargetApi作用相同,但是官方文檔更推薦使用RequiresApi。
    @RequiresApi
    //子類重寫父類方法時,希望父類其他方法也被調用
    @CallSuper
    //調用此方法需要的權限
    @RequiresPermission(Manifest.permission.ACCESS_FINE_LOCATION)
    @RequiresPermission(anyOf = {Manifest.permission.ACCESS_FINE_LOCATION,多個})
    //操作數據庫時的讀權限,寫權限
    @RequiresPermission.Read
    @RequiresPermission.Write

    //檢查傳入參數是否是對應資源
    @AnimatorRes
    @AnimRes
    @ArrayRes
    @AttrRes
    @BoolRes
    @ColorRes
    @ColorInt
    @ColorLong
    @DimenRes
    @DrawableRes
    @FontRes
    @FractionRes
    @IdRes
    @IntegerRes
    @LayoutRes
    @InterpolatorRes
    @XmlRes
    @RawRes
    @StringRes
    @MenuRes
    @StyleableRes
    @StyleRes
    @AnyRes
    @AnyThread
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章