版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
@注解
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