在 Android Studio 中使用@NonNull注释的正确方法

2022-09-01 16:04:34

我想在Android中使用注释,但我无法找出正确的方法。我建议你这个例子:@NonNull

public void doStuff(@NonNull String s){
     //do work with s...    
}

因此,当我致电IDE时,它会给我一个警告。问题是我不能依赖这个注释,因为正如这个问题所指出的,它们不会传播得很远。所以我想对我的方法进行空检查,如下所示:doStuff(null)

 if(s==null) throw new IllegalAgrumentException();

但是,假设 IDE 会警告我,这总是错误的。我想知道最好的方法是什么。s!=nulls==null

我个人认为应该有一个这样的注释,它只检查并警告null没有传递给它,但是当值被null检查时不会抱怨。@ShouldntBeNull


答案 1

你可以使用Objects.requireNonNull。它将在内部执行检查(因此IDE不会在您的函数上显示警告),并在参数为:null

public MyMethod(@NonNull Context pContext) {
    Objects.requireNonNull(pContext);
    ...
}

如果要引发另一个异常或使用 API 级别< 19,则可以创建自己的帮助程序类来实现相同的检查。例如:

public class Check {
    public static <T> T requireNonNull(T obj) {
        if (obj == null)
            throw new IllegalArgumentException();
        return obj;
    }
}

并像这样使用它:

public MyMethod(@NonNull Context pContext) {
    Check.requireNonNull(pContext);
    ...
}

答案 2

谷歌的例子如下

import static com.google.common.base.Preconditions.checkNotNull;

...

public void doStuff(@NonNull String sParm){
     this.sParm= checkNotNull(s, "sParm cannot be null!");
}

推荐