使用注解:
@Nullable 参数或返回值可以为空
@NonNull 参数或返回值不可以为空
@AnyRes 整型值 - 任何一种资源类型
@XmlRes 整型值 - android.R.xml 类型
@LayoutRes 整型值 - android.R.layout 类型
@IdRes 整型值 - android.R.id 类型
@MenuRes 整型值 - android.R.menu 类型
@RawRes 整型值 - android.R.raw 类型
@AnimatorRes 整型值 - android.R.animator 类型
@AnimRes 整型值 - android.R.anim 类型
@TransitionRes 整型值 - transition 类型
@StyleableRes 整型值 - android.R.styleable 类型
@StyleRes 整型值 - android.R.style 类型
@AttrRes 整型值 - android.R.attr 类型
@ColorRes 整型值 - android.R.color 类型
@DrawableRes 整型值 - android.R.drawable 类型
@ArrayRes 整型值 - android.R.array 类型
@BoolRes 整型值 - 布尔类型
@IntegerRes 整型值 - android.R.integer 类型
@StringRes 整型值 - android.R.string 类型
@FractionRes 整型值 - Fraction 类型,百分比
@InterpolatorRes 整型值 - android.R.interpolator 类型
@PluralsRes 整型值 - android.R.plurals 类型,复数字符串类型
很多时候,我们使用整型常量代替枚举类型(性能考虑)
@IntDef(flag=true, value={常量1, 常量2, ...})
@Retention(RetentionPolicy.SOURCE)
public @interface 注解名{} // 定义新注解 - 参数或返回值是否由指定常量组合而成
- 注解接口中的方法没有参数、没有throws语句、不能使用泛型。
@UiThread 运行在 UI 线程
@MainThread 运行在 主 线程
@WorkerThread 运行在 后台 线程
@BinderThread 运行在Binder线程
@Size(min=1) 集合/数组/字符串之类不可以为空
@Size(max=数值) 集合/数组/字符串之类最大个数
@Size(数值) 集合/数组/字符串之类个数
@Size(multiple=数值) 集合/数组/字符串之类大小是几的倍数
@IntRange 参数是 int 或 long
@FloatRange 参数是 float 或 double
@RequiresPermission(Manifest.permission.权限名)
@RequiresPermission(anyOf = {Manifest.permission.权限名,
Manifest.permission.权限名})
@RequiresPermission(allOf = {Manifest.permission.权限名,
Manifest.permission.权限名})
@CallSuper 要求子类中重写的函数调用父类的被重写的函数
@CheckResult(suggest="建议内容文字") 没检查返回值则AS发出包含建议内容的警告信息
@VisibleForTesting 单元测试中让一些不可见的类对测试可见
@Keep 类或方法不要混淆
@Override 是否真的重载了一个来自父类的方法
@Deprecated 不再鼓励使用或已弃用的属性、方法等
@SuppressWarnings 抑制某种类型的警告
@SafeVarargs 断言不定长参数可以安全使用
@Generated 代码生成工具生成,不建议手动修改
@FunctionalInterface 修饰接口表示其是带单个方法的函数式接口
@Target(ElementType.如下元素类型)
@Target({ElementType.如下元素, ElementType.如下元素}) // 支持多种元素类型
ANNOTATION_TYPE 注解类型声明
CONSTRUCTOR 构造函数
FIELD 成员变量
LOCAL_VARIABLE 局部变量
METHOD 方法
PACKAGE 包
PARAMETER 方法参数或构造函数的参数
TYPE 类(包括 enum)和接口(包括注解类型)
TYPE_PARAMETER 类型参数
TYPE_USE 类型的用途
- 没有使用 @Target 修饰不能用于 TYPE_USE 和 TYPE_PARAMETER 元素类型
@Retention(RetentionPolicy.访问范围)
SOURCE 注解信息只会保留在 .java 源码里
CLASS 注解信息只会保留在 .java 源码和 .class 文件里 - 默认
RUNTIME 注解信息在运行时也保留
@Documented 包含在被注解项的文档中
@Inherited 可以被子类继承
@Repeatable 可以在同一个项上面应用多次(Java8引入,如四个Java5引入)
网友评论