Java中的“ this”可以为空吗?

在类方法中看到了这一行,我的第一反应是嘲笑编写它的开发人员。但是,后来,我认为我应该确保自己是对的。


public void dataViewActivated(DataViewEvent e) {

    if (this != null)

        // Do some work

}

那行会否评估为假?


MYYA
浏览 899回答 3
3回答

鸿蒙传说

不,它不能。如果您使用this,那么您就在实例中,所以this它不是null。JLS说:当用作主要表达式时,关键字this表示一个值,该值是对其调用实例方法的对象(第15.12节)或对正在构造的对象的引用。如果从对象调用方法,则该对象存在或将具有NullPointerExceptionbefore(或它是静态方法,但是不能this在其中使用)。

九州编程

永远不会,关键字“ this”本身表示该类范围内该类的当前活动实例(对象),您可以使用该实例访问其所有字段和成员(包括构造函数)以及其父类的可见字段。而且,更有趣的是,尝试设置它:this = null;考虑一下吗?怎么可能,就像剪断您坐在的树枝一样。由于关键字“ this”在类的范围内可用,因此只要您说this = null;在类中的任何位置,您基本上都是在要求JVM在某个操作的中间释放分配给该对象的内存,但JVM不允许发生这种情况,因为它需要在完成该操作后安全地返回。此外,尝试this = null;将导致编译器错误。原因很简单,Java(或任何语言)的关键字永远不能被赋值,即关键字永远不能是赋值操作的左值。其他示例,您不能说:true = new Boolean(true);true = false;
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java