Right way to use the @NonNull annotation in Android Studio(在 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 注解的正确方法的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:在 Android Studio 中使用 @NonNull 注解的正确方法
基础教程推荐
- 存储 20 位数字的数据类型 2022-01-01
- 无法复制:“比较方法违反了它的一般约定!" 2022-01-01
- 问题http://apache.org/xml/features/xinclude测试日志4j 2 2022-01-01
- 修改 void 函数的输入参数,然后读取 2022-01-01
- Spring AOP错误无法懒惰地为此建议构建thisJoinPoin 2022-09-13
- REST Web 服务返回 415 - 不支持的媒体类型 2022-01-01
- Struts2 URL 无法访问 2022-01-01
- RabbitMQ:消息保持“未确认"; 2022-01-01
- 使用堆栈算法进行括号/括号匹配 2022-01-01
- 如何对 Java Hashmap 中的值求和 2022-01-01
