我得到了一个自动生成的覆盖,如下所示:
@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
部分看起来很奇怪,我不确定它是否有必要存在。安卓工作室是否需要@org.jetbrains.annotations.Nullable
才能正常工作?
否,不需要在此方法中添加@Nullable
注释。这只是为了让程序员知道data
在某个时刻可能是null
。这对编译器也很有帮助,如果添加@Nullable
而不检查它是否为null,编译器可能会警告您可能会得到NullPointerException
。
编辑
也许这个Annotating Type Arguments And Type Parameters
可以帮助你理解其中的区别。(这仅适用于kotlin(
还有两种类型:
1.-Jetbrains Annotations
2.-Android Annotations
但大致是因为,如果你使用jetbrains,它会在intellIJIDE上警告你,例如,如果你通过终端运行lint代码,它不会警告你,而安卓系统则会警告你,即使你在管道、lint等上运行它。
因此,也许最好使用androidx.annotation.Nullable
,这更准确。