安卓中的@Nullable和NotNull 注释
参考文章:
http://blog.csdn.net/abren32/article/details/46985115
https://www.jetbrains.com/help/idea/2016.2/inferring-nullity.html
http://stackoverflow.com/questions/22641830/android-studio-infer-nullity
@Nullable和NotNull的作用
IntelliJ IDEA makes it possible to analyse the source code for the elements that can become null, and annotate them, provided that annotations are available in the project sources.
这些注解是用来标注方法是否能传入null值,如果可以传入NUll值,则标记为nullbale,如果不可以则标注为Nonnull. 在我们做了一些不安全严谨的编码操作的时候,这些注释会给我们一些警告。比如说
没有注释前的例子这个构造方法是要传入String的类型,但在实际调用中却传入了null,系统却没有任何提示,这在我们实际的开发中会造成难以察觉的错误。
但是在修改之后是这样的。
当注释了NonNull后,再次调用方法传入null后系统便会弹出警告。这个就是这两个注释的效果。
怎么生成@Nullable和NotNull?
在Android Studio中已经帮我们导入了相关的注释包,只要点击Android studio中的Infer Nullity变可以生成相应的注释。
选择当前的文件
关于注释的拓展
其实这两个注释都是从Android支持注解库中获取到的,在这个库中还有其他一些更好的注释:
@CheckResult
该注释是来告诉我们该方法的返回值类型是我们预计要使用的,而不是错误效果的方法:
@CheckResult的用法可以看到,添加了这个注释后,系统会提示你所传入的参数格式是错误的(普通的提示只会分辨出是否传入的是String)
@StringRes 与 @DrawableRes 等等
你是不是在TextView上调用setText方法,经常会出现莫名其妙的异常java android.content.res.Resources$NotFoundException: String resource ID #0x3039? 如果设置了一个整型数给setText,TextView会假定这个整型数是一个字符串的资源id,为了设置string文本将会查询这个整数。对于整型数是无效的资源id的问题,可以通过@StringRes 注解来补救。
在源码中已经添加好了这些注释,不用我们自己加传入错误类型后的提示
以上就是我对这几个注释的理解和相关内容的整合,类似的注释还有很多,这里只讲了其中的几个典型的,感兴趣可以再去找找看。