`@Nullable @org.jetbrains.annotations.Nullable Intent data` 是做什么的,有必要吗?

What does `@Nullable @org.jetbrains.annotations.Nullable Intent data` do and is it necessary?

我得到了这样一个自动生成的覆盖:

    @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 才能正常运行吗?

不,没有必要在该方法中添加@Nullable注解。这只是为了让程序员知道 data 在某些时候可能是 null。这对编译器也很有帮助,如果您添加 @Nullable 并且不检查它是否为空,编译器可能会警告您可能会得到 NullPointerException.

编辑

也许这个 Annotating Type Arguments And Type Parameters 可以帮助您理解其中的区别。 (这仅适用于 kotlin

还有两种类型:

1.- Jetbrains Annotations

2.- Android Annotations

但大致是因为如果你使用 jetbrains 它会在 intelIJ IDE 上警告你,例如如果你通过终端 运行 一个 lint 代码它不会警告你,android 一个它会警告你,即使你 运行 它在管道、lint 等上

所以也许最好使用 androidx.annotation.Nullable 来代替,这样更精确。