【问题标题】:Is there a need to check whether the current reference is null? [duplicate]是否需要检查当前引用是否为空? [复制]
【发布时间】:2023-03-06 15:59:01
【问题描述】:

我了解到,在非静态块内,this 表示调用该块的当前引用。我怀疑是否需要检查this 是否曾经null,我的意思是如果它首先为空,则块(方法、构造函数等)将不会被执行(NPE)。我遇到了这段代码,它检查this != null。不知道为什么要用,真的有必要吗?

public int compareTo(StudentMarksTO arg0) {
    if(arg0.isIsfalsegenerated()==true) {
        if(arg0!=null && this!=null && 
           arg0.getFalseNo()!=null && this.getFalseNo()!=null &&
           !arg0.getFalseNo().toString().equals("") && 
           !this.getFalseNo().toString().equals("") ) {
        return this.getFalseNo().compareTo(arg0.getFalseNo());
    }
    else
        return 0;             
    }
}

【问题讨论】:

  • this!=null 永远不能为假
  • 'this' 永远不会为空
  • 就是这样,我想知道为什么没有显示警告
  • FWIW,默认的 IntelliJ 检查将其标记为有问题。
  • 在理论上 this 为空的情况下,您将永远无法进入(非静态)方法

标签: java this non-static nul


【解决方案1】:

如果你正在使用这个,那么你就在实例中,所以它不为空。

关键字“this”本身代表该类范围内该类的当前活动实例(对象),您可以使用它访问其所有字段和成员(包括构造函数)以及其父类的可见部分。

更多信息请查看Can "this" ever be null in Java?

【讨论】:

    猜你喜欢
    • 2011-02-26
    • 2011-09-24
    • 1970-01-01
    • 2012-07-15
    • 2022-07-20
    • 2021-11-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多