java中this是实例吗_Java中“this”可以为null吗?

问题

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

public void dataViewActivated(DataViewEvent e) {

if (this != null)

// Do some work

}

那条线路会被评估为假吗?

#1 热门回答(81 赞)

不,它不能。如果你正在使用this,那么你在实例中sothis不为空。

JLS说:

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

如果你从一个对象调用一个方法,那么该对象就存在了,或者你将有一个(或者它是一个静态方法但是,你不能在其中使用this)。

资源: - JLS - 这个关键字

#2 热门回答(60 赞)

这就像问自己"我还活着吗?"this永远不会为空

#3 热门回答(8 赞)

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

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

this = null;

想一想吗?怎么可能,就像削减你所坐的分支一样。因为关键字"this"在类的范围内可用,因此只要你说这个= null;在类中的任何地方,你基本上都要求JVM在某些操作过程中释放分配给该对象的内存,JVM不允许这样做,因为它需要在完成该操作后安全返回。

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

其他例子,你不能说:

true = new Boolean(true);

true = false;

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值