gpt4 book ai didi

java - 当 someObject 是字段范围变量时,为什么 Eclipse null 分析会忽略 null 检查语句 : if (someObject ! = null) {...}?

转载 作者:行者123 更新时间:2023-12-01 06:16:18 25 4
gpt4 key购买 nike

我有一堂这样的课:

import javax.annotation.Nullable;
public class Nullness {

private @Nullable Object someObject;

public void foo() {
if (someObject != null) {
someObject.toString(); //error "Potential null pointer access: The field someObject is specified as @Nullable"
}
}
}

并且当启用eclipse null分析时,在语句someObject.toString();处标记错误。内容为Potential null pointer access: The field someObject is specified as @Nullable .

Eclipse 有一个快速修复程序,可以将我的代码更改为如下所示:

    public void foo() {
final Object someObject2 = someObject;
if (someObject2 != null) {
someObject2.toString();
}
}

这可以消除错误,请注意,实际上, final不需要修饰符即可使错误消失。

我不明白为什么 Eclipse 不允许我在空检查语句中直接使用字段变量 if (someObject != null)但强制我创建额外的局部变量 someObject2 。这种行为只是一个错误还是有意为之?

最佳答案

必须在没有仔细研究的情况下发布问题,向社区道歉。 this wiki中明确提到了这个问题,讨论了直接使用字段变量可能会在几个方面造成意想不到的效果。

关于java - 当 someObject 是字段范围变量时,为什么 Eclipse null 分析会忽略 null 检查语句 : if (someObject ! = null) {...}?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23757376/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com