`@Nullable @org.jetbrains.annotations.Nullable Intent data` 有啥作用,是不是有必要?
Posted
技术标签:
【中文标题】`@Nullable @org.jetbrains.annotations.Nullable Intent data` 有啥作用,是不是有必要?【英文标题】:What does `@Nullable @org.jetbrains.annotations.Nullable Intent data` do and is it necessary?`@Nullable @org.jetbrains.annotations.Nullable Intent data` 有什么作用,是否有必要? 【发布时间】:2021-09-16 20:38:05 【问题描述】:我得到了一个像这样的自动生成的覆盖:
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable @org.jetbrains.annotations.Nullable Intent data)
super.onActivityResult(requestCode, resultCode, data);
@Nullable @org.jetbrains.annotations.Nullable Intent data
部分看起来很奇怪,我不确定它是否有必要存在。 android Studio 是否需要@org.jetbrains.annotations.Nullable
才能正常运行?
【问题讨论】:
我不了解 android studio(这就是我在这里写这篇文章的原因),但通常没有必要。它标记该字段可能为空,因此如果您写data.something
,编辑器将显示警告
【参考方案1】:
不,不需要在这个方法中添加@Nullable
注解。这只是为了让程序员知道data
在某些时候可能是null
。这对编译器也很有帮助,如果您添加 @Nullable
并且您不检查它是否为空,编译器可能会警告您可能会得到 NullPointerException
。
编辑
也许这个Annotating Type Arguments And Type Parameters
可以帮助您了解差异。 (这仅适用于 kotlin)
还有两种类型:
1.- Jetbrains Annotations
2.- Android Annotations
但大致是因为如果您使用 jetbrains,它会在 intelIJ IDE 上警告您,例如,如果您通过终端运行 lint 代码,它不会警告您,而 android 会警告您即使您在管道、棉绒等上运行它也会警告您。
所以也许改用androidx.annotation.Nullable
更好,这样更准确。
【讨论】:
我实际上是在问为什么有两个可空值,我基本上知道它自己的作用,但不知道为什么他们认为添加其中两个是合理的默认值(一个来自 androidx 注释,一个来自jetbrains 注释) 编辑了我的答案@JustAnEuropean 好吧,我认为唯一重要的其他信息是 androidx 注释是否与 jetbrains 注释在同一级别上被识别,但快速检查显示它们是。您的回答对我来说有点难以理解,但我想它包含该信息,所以好吧。以上是关于`@Nullable @org.jetbrains.annotations.Nullable Intent data` 有啥作用,是不是有必要?的主要内容,如果未能解决你的问题,请参考以下文章
Android Studio 缺少必要的插件 org.jetbrains.android
执行 org.jetbrains.kotlin 时缺少必需的类
找不到 org.jetbrains.kotlinx:kotlinx-html:0.6.4
覆盖方法会导致 Android Studio 中出现冗余、重复的注解
“kotlin-android”和“org.jetbrains.kotlin.android”是一样的吗?
在以下任何来源中均未找到插件 [id: 'org.jetbrains.kotlin.jvm', version: '1.2.71']