为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

MYYA 2019-12-02 13:59:55
在类方法中看到了这一行,我的第一反应是嘲笑编写它的开发人员。但是,后来,我认为我应该确保自己是对的。public void dataViewActivated(DataViewEvent e) {    if (this != null)        // Do some work}那行会否评估为假?
查看完整描述

3 回答

?
鸿蒙传说

TA贡献1865条经验 获得超7个赞

不,它不能。如果您使用this,那么您就在实例中,所以this它不是null。


JLS说:


当用作主要表达式时,关键字this表示一个值,该值是对其调用实例方法的对象(第15.12节)或对正在构造的对象的引用。


如果从对象调用方法,则该对象存在或将具有NullPointerExceptionbefore(或它是静态方法,但是不能this在其中使用)。


查看完整回答
反对 回复 2019-12-02
?
九州编程

TA贡献1785条经验 获得超4个赞

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


而且,更有趣的是,尝试设置它:


this = null;

考虑一下吗?怎么可能,就像剪断您坐在的树枝一样。由于关键字“ this”在类的范围内可用,因此只要您说this = null;在类中的任何位置,您基本上都是在要求JVM在某个操作的中间释放分配给该对象的内存,但JVM不允许发生这种情况,因为它需要在完成该操作后安全地返回。


此外,尝试this = null;将导致编译器错误。原因很简单,Java(或任何语言)的关键字永远不能被赋值,即关键字永远不能是赋值操作的左值。


其他示例,您不能说:


true = new Boolean(true);

true = false;


查看完整回答
反对 回复 2019-12-02
  • 3 回答
  • 0 关注
  • 898 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信