在类方法中看到了这一行,我的第一反应是嘲笑编写它的开发人员。但是,后来,我认为我应该确保自己是对的。public void dataViewActivated(DataViewEvent e) { if (this != null) // Do some work}那行会否评估为假?
3 回答
鸿蒙传说
TA贡献1865条经验 获得超7个赞
不,它不能。如果您使用this,那么您就在实例中,所以this它不是null。
JLS说:
当用作主要表达式时,关键字this表示一个值,该值是对其调用实例方法的对象(第15.12节)或对正在构造的对象的引用。
如果从对象调用方法,则该对象存在或将具有NullPointerExceptionbefore(或它是静态方法,但是不能this在其中使用)。
九州编程
TA贡献1785条经验 获得超4个赞
永远不会,关键字“ this”本身表示该类范围内该类的当前活动实例(对象),您可以使用该实例访问其所有字段和成员(包括构造函数)以及其父类的可见字段。
而且,更有趣的是,尝试设置它:
this = null;
考虑一下吗?怎么可能,就像剪断您坐在的树枝一样。由于关键字“ this”在类的范围内可用,因此只要您说this = null;在类中的任何位置,您基本上都是在要求JVM在某个操作的中间释放分配给该对象的内存,但JVM不允许发生这种情况,因为它需要在完成该操作后安全地返回。
此外,尝试this = null;将导致编译器错误。原因很简单,Java(或任何语言)的关键字永远不能被赋值,即关键字永远不能是赋值操作的左值。
其他示例,您不能说:
true = new Boolean(true);
true = false;
添加回答
举报
0/150
提交
取消