前言
这一篇来浅谈一下注解(Annotation),为之后的注解的学习打下一个良好的印象,消除对注解的恐惧。
正文
首先推荐一个博客的连接http://www.cnblogs.com/peida/archive/2013/04/23/3036035.html,这篇博客对基础概念将的非常的好,我希望你先看完这篇博客,再继续往下看。
看完了这么大篇幅的概念,我肯定是要懵逼了,有一种似懂非懂不可言传的感觉。自己总结一下:
注解就是某一种符号,这种符号有特殊的意义,在不同时期可以帮助我们做一些重要的操作,例如代码检查,代码提示等等。他可以标记类,属性,方法,并且可以设置标记的值,方便我们进行必要的判断。
例如推荐的博客中有提到三个非常常见的系统内置注解:
@Override:用于修饰此方法覆盖了父类的方法,如果父类并没有此方法,报错
@Deprecated:用于修饰已经过时的方法,说明这个方法已经不推荐使用了。
@SuppressWarnnings:用于通知java编译器禁止特定的编译警告,例如强制转换提醒,Handler的警告提醒。
这三个是系统提供的注解,在我们编译时可以帮助我们进行代码检查,方便我们提前发现错误。
除了刚才的三个,在最新的sdk中还有:
@Nullable注解能被用来标注给定的参数或者返回值可以为null。
@NonNull注解能被用来标注给定的参数或者返回值不能为null。
@AnimRes 注解参数类型为anim资源
从@AnimRes就可以推断中,肯定还会有各种基本类型(Integer,Long , Short,Float等等),字符串,图片等各种价差的类型,这里不多废话了,有兴趣自己亲自去看一看。
下面贴个代码片段,看看他们是怎么使用的:
/**
* 这里对 int型参数res进行注解检查,参数只能是anim资源
*
* 这里对返回值进行了注解,返回值可以为null
*/
private @Nullable BaseReflect setAnim(@AnimRes int res){
return null;
}
/**
* 这里对 int型参数res进行注解检查,参数只能是String资源
*
* 这里对返回值进行了注解,返回值不可以为null,编辑器右侧会出现黄色警告,提示这个返回值不能为null
*/
private @NonNull BaseReflect setAnim(@StringRes int res){
return null;
}
果然注解十分的强大,就系统的内置注解就够我们平时装逼一阵了,一个单词就完成了复杂的检查工作。
总结
看完了复杂概念,再经过小小的举例,我们已经对注解有了最基本的了解,对于系统的内置注解,也可以熟练的使用,我们的最终目标就是要自定义注解,有了美好的开始,之后就变得简单。
下一篇来感受一下如何自定义注解。