@註解
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