android 中的一些资源注解,让编译器帮你检查代码
写方便的时候可以用注解来声明一些参数,以明确的指示参数的类型,让代码更安全。我们看到,在android源代码里大量使用了注解。我整理了一些注解如下:
@NonNull 告诉编译器,这个参数是非空的,编译器会帮你做出检查。
示例:
@NonNull
public static Snackbar make(@NonNull View view, @StringRes int resId, @Duration int duration) {
return make(view, view.getResources().getText(resId), duration);
}
@Nullable 声明参数是可能为空的,编译器会帮你做出检查
示例:
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {}
@IdRes 声明这个 int 参数是个 id,编译器会帮你做出检查
public View findViewById(@IdRes int id) {
return getDelegate().findViewById(id);
}
@StringRes 声明这个 int 参数 是一个字符串资源,编译器会帮你做出检查
示例:
@NonNull
public Snackbar setAction(@StringRes int resId, View.OnClickListener listener) {
return setAction(mContext.getText(resId), listener);
}
@StyleRes 声明参数是 style 类型,编译器会帮你做出检查
@Override
public void setTheme(@StyleRes final int resid) {}
@LayoutRes 声明参数是个 layout 类型,,编译器会帮你做出检查
示例:
public void setContentView(@LayoutRes int layoutResID)
类似的有很多,看名字就知道干什么用的
@DimenRes @DrawableRes @RawRes @ColorRes @XmlRes
@BoolRes @IntegerRes @StyleableRes
另:
@Keep 声明这个方法不被混淆