@NonNull和@Nullable注释会在运行时影响Android的性能吗?我的意思是他们只有支持LINT和其他工具来检测可能的错误的目的,所以他们可能/希望在编译期间被忽略.你有什么资料来证明这一点吗?

解决方法:

作为一个小实验,我在Android应用中创建了以下方法:

private void test(@NonNull Object o) {

o.toString();

}

编译项目,用ApkTool“解压缩”它并查看了smali文件:

.method private test(Ljava/lang/Object;)V

.locals 0

.param p1, "o" # Ljava/lang/Object;

.annotation build Landroid/support/annotation/NonNull;

.end annotation

.end param

.prologue

.line 22

invoke-virtual {p1}, Ljava/lang/Object;->toString()Ljava/lang/String;

.line 23

return-void

.end method

因此,Nonnull注释实际上并未在编译时从代码中删除.

我可以关闭Android studio中的检查,调用带有null作为参数的test-method并编译应用程序.然后它在o.toString()处遇到NullPointerExeption崩溃,但是没有提示VM实际上使用注释在运行时检查参数.正是拉尔托在他的回答中所说的.

我确实想知道VM是否能够这样做并且在使用null参数调用方法时抛出异常.

标签:android,annotations

来源: https://codeday.me/bug/20190528/1168744.html

android @nonnull的作用,@NonNull和@Nullable注释 – 它会影响Android的性能吗?相关推荐

  1. android的适配器作用,适配器在Android中的作用是什么?

    适配器在Android中的作用是什么? 我想知道在Android环境中何时,何地以及如何使用适配器. 来自Android开发者文档的信息对我来说不够,我希望得到更详细的分析. 11个解决方案 39 v ...

  2. android @nonnull的作用,Android Studio错误的含义:未注释的参数会覆盖@NonNull参数

    问题 我正在尝试使用Android Studio.在创建一个新项目并向create MyActivity类添加defaultonSaveInstanceState方法时,当我尝试将代码提交给Git时, ...

  3. android @nonnull的作用,Android Studio错误的含义:未注释的参数将覆盖@NonNull参数

    除了其他的答案, @NonNull (和它的对手, @Nullable )注释注解一个字段,参数或方法的返回types. IntelliJ,因此Android Studio可以在编译时警告您可能的Nu ...

  4. android @nonnull的作用,Android:NullPointerException尽管@NonNull

    我正在使用注释来确保参数不为null,假设这会导致编译器检查. public @Nullable ApplicationAccount accountForKey(@NonNull String ke ...

  5. Spring注解@NonNull作用 Spring注解@Nullable作用 Spring NonNull 注解作用 Spring Nullable注解作用

    Spring注解@NonNull作用 Spring注解@Nullable作用 Spring NonNull 注解作用 Spring Nullable注解作用 一.概述 在看Spring源码的时候,经常 ...

  6. android 混淆规则作用,Android混淆规则

    简介 Java代码是非常容易反编译的.为了很好的保护Java源代码,我们往往会对编译好的class文件进行混淆处理. ProGuard是一个混淆代码的开源项目.它的主要作用就是混淆,当然它还能对字节码 ...

  7. android布局的作用,Android UI布局经验总结

    如何在Android中动态设置颜色透明?10%20%到100% Android布局分析工具HierarchyView Android使用include/merge/ViewStub优化布局 List的 ...

  8. 腾讯、网易云、字节跳动面试点总结—AMS在Android起到什么作用?

    本专栏专注分享大型Bat面试知识,后续会持续更新,喜欢的话麻烦点击一个关注 面试官: AMS在Android起到什么作用,简单的分析下Android的源码 心理分析:这道题在发生在大多数场景下.面对这 ...

  9. Android服务模块作用,Android 9.0 AutotoMotive模块之CarService

    Android 9.0 AutotoMotive模块之CarService Android 9.0 AutotoMotive模块之CarService 上一篇对Automotive模块的Vhal作了总 ...

最新文章

  1. 微信小程序界面跳转方法
  2. 推荐几款好用又免费的项目管理工具
  3. TCP释放连接的四次挥手过程
  4. lotus php,LotusPhp框架目录_PHP教程
  5. offset client scroll
  6. 【项目管理】项目问题诊断
  7. ambari删除脚本
  8. 树莓派2代B model 上手初体验,不用显示器,Python GPIO 点亮一颗LED
  9. c++builder提高批量动态创建panel的速度_骑行时影响速度的事项有哪些 怎样有效提高骑行速度 单车租赁信息...
  10. micropython是什么意思_MicroPython到底是啥-百度经验
  11. 数美科技-AI独角兽-NLP/语音/图像等岗位等你来~
  12. 海南省月降水量分布数据
  13. 云计算的小兄弟:雾计算和霾计算
  14. vue可以编辑发布多长的视频_vue视频的总时长是多少
  15. 域名解析不生效,提示“未使用阿里云解析”如何解决?
  16. redis主从、集群
  17. [读后感-Cayden原创] 读《1-2年纪,塑造孩子一生的关键》有感
  18. IBM Storwize V5000资源管理柜
  19. springboot配置文件不生效的原因
  20. python open找不到文件的原因_浅谈python 调用open()打开文件时路径出错的原因

热门文章

  1. ftp ftpclient异常解决、远程命令已经错误代码
  2. 亚马逊Kindle正式进入中国
  3. Trunk的概述与配置方法(理论与是实践)
  4. NCAR data-groundwater-CLM4.0
  5. dhcp服务器性能,配置dhcp服务器的总结
  6. 【蓝桥模板】——迷宫迷雾重重,小蓝带你拨云见日(DFS地图模板)
  7. 中国运算跨导放大器行业市场供需与战略研究报告
  8. 前端如何实现请求防抖
  9. 第十五个年头了,石墨烯电池出来了吗?
  10. 微信小程序填坑之路其一:wx.request发送与服务端接受