Nullness注解
名称
参数
Target
含义
@Nullable
-
PARAMETER
可以为null
@NonNull
-
PARAMETER
不可为null
资源注解
资源注解的Target都是PARAMETER
名称
参数
含义
@AniamtorRes
-
R.ainimaor
@AnimRes
-
R.ainim
@AnyRes
-
任意资源类型
@AttrRes
-
R.arry
@BoolRes
-
布尔型
@ColorRes
-
R.color
@DrawableRes
-
R.drawable
@Fraction
-
多用于Animation XML中,50%p
@IdRes
-
R.id
@InterpolatorRes
-
R.interpolator
@LayoutRes
-
R.layout
@MenuRes
-
R.menu
@PluralsRes
-
表示复数类型字符串
@RawRes
-
R.raw
@StringRes
-
R.string
@StyleableRes
-
R.styleable
@StyleRes
-
R.style
@TransitionRes
-
标记整型值是transition类型的
@XmlRes
-
R.xml
类型定义注解@IntDef
使用情景:
声明的一组int常量来表示类型,如果某方法只接收这几种常量,可以使用@IntDef; 如果某方法只要求返回这几种常量,可以使用@IntDef。
example1:
注解定义:
@Retention(SOURCE)
@IntDef({ORIGINAL, PORTRAIT})//常量可声明在任意位置
public @interface MyType {
}
使用:
public void setType(@MyType int type) {
}
这如下方式使用时,则编译器会报错
setType(8);
example2
@IntDef(flag = true, value = {ORIGINAL, PORTRAIT}) //常量可声明在任意位置
public @interface MyType {
}
使用:
@MyType
public int getType() {
return 99; // 返回值与常量不相等,则报错
}
线程注解
@Target({METHOD,CONSTRUCTOR,TYPE})
@UiThread @MainThread
@WorkerThread
@BinderThread
RGB 颜色值注解
@Target({PARAMETER,METHOD,LOCAL_VARIABLE,FIELD}
@ColorInt
值范围注解
@Target({METHOD,PARAMETER,FIELD,LOCAL_VARIABLE})
@Size
源码:
@Retention(CLASS)
@Target({PARAMETER,LOCAL_VARIABLE,METHOD,FIELD,ANNOTATION_TYPE})
public @interface Size {
/** An exact size (or -1 if not specified) */
long value() default -1;
/** A minimum size, inclusive */
long min() default Long.MIN_VALUE;
/** A maximum size, inclusive */
long max() default Long.MAX_VALUE;
/** The size must be a multiple of this factor */
long multiple() default 1;
}
对于数组、集合字符串之类的参数,可以用@Size来表示这些参数的大小
* @Size(min=1), 表示集不为空
* @Size(max=23),表示字符串最大字符个数是23
* @Size(2), 表示元素个数是2
* @Size(multiple=2), 数组大小是2的倍数
@IntRange
@IntRange(from=2,to=10)
@FloatRange
@FloatRange(from=0.0,to=1.0)
权限注解
@Target({ANNOTATION_TYPE,METHOD,CONSTRUCTOR,FIELD})
@RequiresPermission(permision)
@RequiresPermission(allOf={permision1,perminsion2})
@RequiresPermission(anyOf={permision1,perminsion2})
重写方法注解
@Target({METHOD})
@CallSuper 子类重写某个方法时,要求调用super,可以使用该注解
@CheckResult
提醒方法的调用者对方法的返回值进行检查
@VisibilityForTesting
@Keep
标记此类或方法不会被混淆