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

2023-04-05Java开发问题
3

本文介绍了在 Android Studio 中使用 @NonNull 注解的正确方法的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着跟版网的小编来一起学习吧!

问题描述

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

I'd like to use the @NonNull annotation in Android, but I can't figure out just the right way to do it. I propose you this example:

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

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

So when i call doStuff(null) the IDE will give me a warning. The problem is that I cannot rely on this annotation since, like this question points out, they don't propagate very far. So I'd like to put a null check on my method, like this:

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

但假设 s!=null 的 IDE 会警告我 s==null 始终为假.我想知道最好的方法是什么.

But the IDE, assuming that s!=null, will warn me that s==null is always false. I'd like to know what is the best way to do this.

我个人认为应该有一个像 @ShouldntBeNull 这样的注解 only 检查并警告 null 没有传递给它,但 没有 在检查值为 null 时会报错.

I personally think that there should be an annotation like @ShouldntBeNull that only checks and warns that null isn't passed to it, but doesn't complains when the value is null checked.

推荐答案

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

You can use Objects.requireNonNull for that. It will do the check internally (so the IDE will not show a warning on your function) and raise a NullPointerException when the parameter is null:

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

如果你想抛出另一个异常或使用 API 级别 <19,然后你可以只做你自己的助手类来实现同样的检查.例如

If you want to throw another exception or use API level < 19, then you can just make your own helper-class to implement the same check. e.g.

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);
    ...
}

这篇关于在 Android Studio 中使用 @NonNull 注解的正确方法的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

The End

相关推荐

如何使用 JAVA 向 COM PORT 发送数据?
How to send data to COM PORT using JAVA?(如何使用 JAVA 向 COM PORT 发送数据?)...
2024-08-25 Java开发问题
21

如何使报表页面方向更改为“rtl"?
How to make a report page direction to change to quot;rtlquot;?(如何使报表页面方向更改为“rtl?)...
2024-08-25 Java开发问题
19

在 Eclipse 项目中使用西里尔文 .properties 文件
Use cyrillic .properties file in eclipse project(在 Eclipse 项目中使用西里尔文 .properties 文件)...
2024-08-25 Java开发问题
18

有没有办法在 Java 中检测 RTL 语言?
Is there any way to detect an RTL language in Java?(有没有办法在 Java 中检测 RTL 语言?)...
2024-08-25 Java开发问题
11

如何在 Java 中从 DB 加载资源包消息?
How to load resource bundle messages from DB in Java?(如何在 Java 中从 DB 加载资源包消息?)...
2024-08-25 Java开发问题
13

如何更改 Java 中的默认语言环境设置以使其保持一致?
How do I change the default locale settings in Java to make them consistent?(如何更改 Java 中的默认语言环境设置以使其保持一致?)...
2024-08-25 Java开发问题
13