本篇博客记录一下Android中注解的使用方式。
Android使用注解时,需要在build.gradle中导入对应的Library,例如:
dependencies {
...........
implementation 'com.android.support:support-annotations:27.0.2'
}
support-annotations中定义了一系列元注解,
用来帮助开发者在编译期间发现可能存在的Bug。
下面我们记录一下不同类型的注解。
1、Nullness注解
此类注解主要作用于函数参数或者返回值,其中:
@Nullable: 标记参数或者返回值可以为空。
@NonNull: 标记参数或者返回值不可以为空。
当出现违反注解标记的代码时,Android Studio就会给出提示。
同时,利用Android Lint进行静态代码检查时,也会有错误提示。
具体的使用示例类似于:
public void onCreate(@Nullable Bundle savedInstanceState,
@Nullable PersistableBundle persistentState) {
onCreate(savedInstanceState);
}
2、资源类型注解
资源在Android中通常以整型值表示,并保存在R.java中。
这意味着一个需要传入String资源值的函数,如果传入drawable资源值,
不会出现任何编译期错误,只有在执行时才能发现问题。
此时,就可以考虑使用资源类型注解。
资源类型注解作用于函数参数、返回值及类的变量,例如:
@AnimatorRes:标记整形值为android.R.animator类型(属性动画相关)。
@AnimRes:标记整形值为android.R.anim类型(补间动画相关)。
@XmlRes:标记整形值为android.R.xml类型。
基本上所有资源类型,都有对应的注解,此处不一一列举。
具体的使用示例类似于:
@Override
public void setContentView(@LayoutRes int layoutResID) {
getDelegate().setContentView(layoutResID);
}
3、类型定义注解
在Android开发中,整型值不止经常用来代表资源引用值,
而且经常用来代替枚举值。
@IntDef注解可用来创建一个整型类型定义的新注解,例如:
........
public static final int TEST_MODE_ONE = 1;
public static final int TEST_MODE_TWO = 2;
//设置注解的保留策略,此处表示仅在源文件中,不编译进.class文件
@Retention(RetentionPolicy.SOURCE)
//定义注