安卓里面总会看到@Size @IntegerRes @NonNull @Nullable等待 注解,他们起到了很多警示的作用,其实在我们编程的过程也可借鉴来使用,它们都位于support-annotations包下,下面是在别的博客看到关于这个包的介绍,用于备忘用:
博客原文地址
-
22个资源类注解:
AnimatorRes:
指出一个integer的参数,成员变量,或方法返回值是一个animator资源的引用。
AnimRes:
指出一个integer的参数,成员变量,或方法返回值是一个anim资源的引用。
AnyRes:
指出一个integer的参数,成员变量,或方法返回值是一个任意资源类型的引用。
ArrayRes:
指出一个integer的参数,成员变量,或方法返回值是一个array资源类型的引用。
AttrRes:
指出一个integer的参数,成员变量,或方法返回值是一个attr资源的引用。
BoolRes:
指出一个integer的参数,成员变量,或方法返回值是一个boolean资源的引用。
ColorRes:
指出一个integer的参数,成员变量,或方法返回值是一个color资源的引用。
DimenRes:
指出一个integer的参数,成员变量,或方法返回值是一个dimen资源的引用。
DrawableRes:
指出一个integer的参数,成员变量,或方法返回值是一个drawable资源的引用(包@mipmap)。
FractionRes:
指出一个integer的参数,成员变量,或方法返回值是一个fraction资源的引用。
IdRes:
指出一个integer的参数,成员变量,或方法返回值是一个id资源的引用。
IntegerRes:
指出一个integer的参数,成员变量,或方法返回值是一个integer资源的引用。
InterpolatorRes:
指出一个integer的参数,成员变量,或方法返回值是一个interpolator资源的引用。
LayoutRes:
指出一个integer的参数,成员变量,或方法返回值是一个layout资源的引用。
MenuRes:
指出一个integer的参数,成员变量,或方法返回值是一个menu资源的引用。
PluralsRes:
指出一个integer的参数,成员变量,或方法返回值是一个plurals资源的引用。
RawRes:
指出一个integer的参数,成员变量,或方法返回值是一个raw资源的引用。
StringRes
:指出一个integer
的参数,成员变量,或方法返回值是一个string
资源的引用。
StyleableRes
:指出一个integer
的参数,成员变量,或方法返回值是一个styleable
资源的引用。
StyleRes
:指出一个integer
的参数,成员变量,或方法返回值是一个style
资源的引用。
TransitionRes
:指出一个integer
的参数,成员变量,或方法返回值是一个transition
资源的引用。
XmlRes
:指出一个integer
的参数,成员变量,或方法返回值是一个xml
资源的引用。
颜色注解:
假如我们定义了一个方法用来设置颜色,但是因为表示颜色用的是int类型,这样就会导致使用的人无法区分是要传一个表示颜色的资源还是颜色值,对于这种情况,support-annotations给我们提供了以下这个注解:
ColorInt
:指出一个被注解的元素,是一个int颜色值,表示的是AARRGGBB
。
4个线程相关的注解:
BinderThread
:指出被注解的方法应该只在binder线程中被调用。
MainThread
:指出被注解的方法应该只在主线程中被调用。
WorkerThread
:指出被注解的方法应该只在工作线程中被调用。
UiThread
:指出被注解的方法应该只在UI线程中被调用。
关于这四个注解的差异,可参见stackoverflow的回答:Difference between MainThread, UiThread, WorkerThread, BinderThread in Android Annotation
其他方法相关的注解:
CallSuper
:指出一个方法如果被重写了,它必须也被调用。比如Activity的生命周期方法onCreate
方法等。
CheckResult
:指出一个方法返回的结果通常是否为一个忽略的错误。比如删除文件:new File("xx").delete();
Keep
:指出一个方法在被混淆的时候应该被保留。
取值范围的注解:
FloatRange
:指出一个被注解的元素应该是一个给定范围内的float值或double值。比如:
@FloatRange(from=0.0,to=1.0)
public float getAlpha() {
...
}
IntRange
:指出一个被注解的元素应该是一个给定范围内的int值或long值。
IntDef
:指出一个int类型的元素,它表示的是一个逻辑上的类型,并且它的值必须是被明确声明的常量之一。官方常使用这种方式使int类型代替enum类型。
StringDef
:指出一个String类型的元素,它表示的是一个逻辑上的类型,并且它的值必须是被明确声明的常量之一。
空指针检查
通常我们如果对一个变量进行主动的赋值为null,编译器可能会进行可能引发空指针异常的警告,我们可以使用以下注解对这种行为进行控制。-NonNull
:指出一个参数,变量,或方法返回值永远不可为null。-Nullable
:指出一个参数,变量,或方法返回值可能为null。
其他注解:
Size
:表示一个被注解的元素应该有一个给定的大小或长度。
VisibleForTesting
:可注解一个类,方法,或变量,表示有更宽松的可见性,这样它能够有更宽泛的可见性,使代码可以被测试。
欢迎共同探讨更多安卓,java,c/c++相关技术QQ群:392154157
网友评论