自定义注解
@interface
自定义注解
public @interface Duration {}
@Target
注解的作用范围
ElementType.TYPE-接口,类,枚举
ElementType.FIELD-属性
ElementType.METHOD-方法
ElementType.PARAMETER-方法参数
ElementType.CONSTRUCTOR-构造函数
ElementType.LOCAL_VARIABLE-局部变量
ElementType.ANNOTATION_TYPE-注解
ElementType.PACKAGE-包
ElementType.TYPE_PARAMETER-类型参数
ElementType.TYPE_USE-任意;
@Target({METHOD, PARAMETER, FIELD})
public @interface NonNull {
}
@IntDef
注解的取值范围
prefix-值前缀
suffix-值后缀
value-值列表
@IntDef(prefix = { "LENGTH_" }, value = {
LENGTH_SHORT,
LENGTH_LONG
})
public @interface Duration {}
public static final int LENGTH_SHORT = 0;
public static final int LENGTH_LONG = 1;
@Retention
注解的可见范围
RetentionPolicy.SOURCE-源文件可见
RetentionPolicy.CLASS-源文件,class文件可见
RetentionPolicy.RUNTIME-源文件,class文件,内存可见
@Retention(SOURCE)
public @interface Duration {}
常用注解
@NonNull-不为空
@Nullable-可为空
@StringRes-字符串资源
@Override-重写
@Deprecated-标记过时
@SuppressWarnings-忽略警告
@Documented-是否包含在用户文档中
@Inherited-允许子类继承父类的注解