当前位置: 首页 > 面试题库 >

为什么“ this”关键字在Java中是final?

朱毅
2023-03-14
问题内容

似乎几乎没有人意识到这一点,但是Java中的“ thisreference”是最终的。在正常的编程天中,我认为可以通过在自己的类中重新定义此引用来重新定义整个实例:

public void method() {
    this = new MyObject("arg1", arg2, arg3); //it throws a compile error
}

为什么此引用在Java中是最终的?


问题答案:

问题不在于它thisfinal参考,而是它本身根本不是参考。this是一个 关键字
,“表示一个值,该值是对为其调用实例方法或默认方法的对象的引用”(JLS§15.8.3)。

此外,从可以重新分配变量的意义上重新分配它没有意义。请记住,重新分配引用只会更改该引用,而不会更改其他可能指向同一对象的引用。因此,重新分配this不仅是疯狂的,而且是无用的。



 类似资料:
  • 主要内容:this.属性名,this.方法名,this( )访问构造方法this 关键字是 Java 常用的关键字,可用于任何实例方法内指向当前对象,也可指向对其调用当前方法的对象,或者在需要当前类型对象引用时使用。 下面我们根据示例分别讲解 this 关键字的作用。 this.属性名 大部分时候,普通方法访问其他方法、成员变量时无须使用 this 前缀,但如果方法里有个局部变量和成员变量同名,但程序又需要在该方法里访问这个被覆盖的成员变量,则必须使用 this 前缀

  • 请问这个为什么要用this啊,不是都在export default中吗? 我只知道this有代表当前类的意思,这个不太懂欸。目前做毕设在跟小白速成课,基础非常差,希望有好心人可以帮忙解答一下,谢谢啦。

  • 问题内容: 当ai遇到关键字时,我正在研究Java中的方法重写。在Internet和其他来源上进行了大量搜索之后,我得出结论,当实例变量的名称与构造函数的参数相同时,将使用关键字。我是对还是错? 问题答案: 是实例中当前实例的别名或名称。它对于消除实例变量与局部变量(包括参数)的区别很有用,但它本身可以用来简单地引用成员变量和方法,调用其他构造函数重载或简单地引用 实例 。适用用途的一些示例(并非

  • 问题内容: 我试图了解java关键字的this实际作用。我一直在阅读Sun的文档,但对于this实际操作仍然不甚了解。 java 关键字 问题答案: 关键字是对当前对象的引用。 另一种思考方式是关键字就像你用来引用自己的人称代词。对于相同的概念,其他语言使用不同的词。VB使用Me和Python约定(因为Python不使用关键字,只是每个方法的隐式参数)将被使用。 如果要引用本质上属于你的对象,你将

  • 问题内容: 我了解这代表调用方法的对象,并且静态方法未绑定到任何对象。但是在上述情况下,变量y也是静态的。 如果我们可以在类对象上调用静态方法,为什么不能允许静态方法设置类的静态变量。 此附加约束的目的是什么? 问题答案: 因为是指对象实例。静态方法的调用中没有对象实例。但是当然你可以访问你的静态字段(仅静态字段!)。只需使用 如果要确保获取的是静态字段,而不是某些具有相同名称的局部变量,请使用类

  • 问题内容: 我看见某个地方 问题答案: Google是您的朋友- 抢手货 -您还可以先看看什么是序列化。 它将成员变量持久化为字节流时标记为不序列化。通过网络传输对象时,需要对该对象进行“序列化”。序列化将对象状态转换为串行字节。这些字节通过网络发送,并且从这些字节中重新创建对象。由java暂态关键字标记的成员变量不会被传输,它们是有意丢失的。 此处的示例,稍作修改(感谢@pgras):