Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/315.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/199.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在Android Studio中抑制潜在的NullPointerException_Java_Android_Android Studio_Intellij Idea - Fatal编程技术网

Java 在Android Studio中抑制潜在的NullPointerException

Java 在Android Studio中抑制潜在的NullPointerException,java,android,android-studio,intellij-idea,Java,Android,Android Studio,Intellij Idea,这: 生成警告: 数组访问“mItems[position]”可能会产生NullPointerException 我想取消显示此警告(我知道如果mItems为空,则不会调用getItem()) 我已尝试使用以下注释: @SuppressWarnings({“NullableProblems”}) @SuppressWarnings({“null”}) 还有//noinspection符号,但它们都不起作用 使用@SuppressWarnings({“all”})是可行的,但这显然不是我想

这:

生成警告:

数组访问“mItems[position]”可能会产生NullPointerException
我想取消显示此警告(我知道如果
mItems
为空,则不会调用
getItem()

我已尝试使用以下注释:

  • @SuppressWarnings({“NullableProblems”})
  • @SuppressWarnings({“null”})
还有
//noinspection
符号,但它们都不起作用

使用
@SuppressWarnings({“all”})
是可行的,但这显然不是我想要的


当我按下alt+enter键时,Android Studio不提供任何抑制选项,只提供添加(无用)空检查的选项。

对我来说
@SuppressWarnings
不起作用。我只是在警告之前添加
assert
语句,使其消失

您的代码应该如下所示:

@Nullable
Item[] mItems;

public Item getItem(int position) {
    return mItems[position];
}
我知道您说过,如果
mItems
null
,您肯定不会调用
getItem()
。但是,检查器不会考虑您在调用函数之前已经进行了检查,因此会发出警告


或者您可以将其保留,因为
mItems=null
永远不会发生。但是您的代码看起来有点凌乱,对我来说很烦人。

这对我来说很有效,但不确定AS为什么要使用常量条件作为抑制器。我认为这与跳过null检查有关,因为它是一个常量条件(即,它总是不为null)


如果您想防止Android Studio在将这些警告保留在编译器中的同时用这些警告打扰您,只需转到设置->编辑器->检查->常量条件和异常并取消选中即可

如果您想完全删除它,请按照其他答案的建议使用适当的SuppressWarnings:

@Nullable
Item[] mItems;

@SuppressWarnings("ConstantConditions")
public Item getItem(int position) {
    return mItems[position];
}

@SuppressWarnings(“ConstantConditions”)帮了我的忙。

为了在Mac上直观地演示

转到
首选项->编辑器->检查

然后在搜索框中键入
恒定条件

然后取消选中下图所示的选项:


请不要删除并重新发布;使用“编辑”按钮为您的问题添加其他上下文。@dimo414以前的发布是一个意外事件(我在添加标记时按了enter键,它发布了它),该问题尚未准备好。后来我试着编辑它,但不可能。这是一个优雅的解决方案。您可以添加一个说明,说明assert的作用和使用时间。文档中的快速引用:断言是包含布尔表达式的断言语句。断言被启用或禁用。如果启用了断言,则执行断言会导致对布尔表达式求值,如果表达式求值为false,则会报告错误。如果断言被禁用,那么断言的执行将毫无效果。“测试的编码标准与生产代码不同。如果我挂起一个引用,我希望我的测试爆炸,没有多余的断言。我如何在测试文件中抑制这个警告?不知道哪一个更糟,添加一堆不必要的断言,或者用误导性的术语抑制警告。叹气。归咎于谷歌。这会d在项目中的任何地方禁用它,这可能有用,但与所问的不同。是的,你是对的,我没有完全阅读问题就回答了。然后,下次我运行检查时,我得到了“冗余抑制”,因此我处于无限循环中
@Nullable
Item[] mItems;

@SuppressWarnings("ConstantConditions")
public Item getItem(int position) {
    return mItems[position];
}
@SuppressWarnings("ConstantConditions")