为什么Java中的“this”关键字是final的? [复制]

2023-12-09

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

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

为什么Java中this引用是final的?


问题不在于这个this is a final参考 - 它本身根本不是参考。this is a keyword“表示一个值,该值是对调用实例方法或默认方法的对象的引用”(JLS §15.8.3).

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么Java中的“this”关键字是final的? [复制] 的相关文章

随机推荐

  • 将内容放入 HttpResponseMessage 对象中?

    几个月前 微软决定更改 HttpResponseMessage 类 以前 您可以简单地将数据类型传递到构造函数中 然后使用该数据返回消息 但现在不行了 现在 您需要使用 Content 属性来设置消息的内容 问题是它是 HttpConten
  • 如何将十六进制序列毫无歧义地转换为汇编语言?

    8B EC 56 8B F4 68 00 70 40 00 FF 15 BC 82 40 像上面这样的序列可以通过多种方式进行分段 每个段都可以翻译为相应的汇编指令 但是每个二进制可执行文件都有其唯一的确定的汇编 避免歧义的数学原理是什么
  • 核心动画围绕任意点旋转图层

    如何使用核心动画围绕任意点旋转图层 在我的例子中 一个点不在我想要旋转的图层内部 我更喜欢在不更改锚点的情况下执行此操作 因为除非每次更改锚点时出现错误 否则它也会更改图层的位置 我尝试了类似的方法 但没有成功 UIImageView be
  • strtol 使用 errno

    我有以下代码 include
  • 方法 findViewById(int) 未定义

    我是 Android 开发新手 我正在尝试编写一个小应用程序 它允许我获取外部 JSON 文件并解析它 我让它工作了 但是如果我尝试在后台执行它 它就不会工作AsyncTask Eclipse 给我错误 对于 LongOperation 类
  • 如何清除tomcat中的PermGen space错误

    我在 Windows 环境中工作 每次使用 tomcat 时都会收到此错误 Apr 30 2012 5 30 37 PM org apache catalina core StandardWrapperValve invoke SEVERE
  • 在 Java 中读取奇怪的 unicode 字符?

    我有以下文本文件 文件以utf 8编码保存 我使用以下代码来读取文件的内容 FileReader fr new FileReader f txt BufferedReader br new BufferedReader fr String
  • Canvas for Node.js 在本地工作但不能在 Heroku 服务器上工作

    我正在使用帆布包对于 Node js 它在我的计算机上运行良好 但当我将其上传到我的 Heroku 服务器时 它不起作用 我所说的 工作正常 是指画布包已正确安装npm install canvasNode js 应用程序按预期工作 但是
  • JTable 不使用 CTRL 进行多选

    我正在尝试更改 JTable 的选择行为 以便能够在不使用 CTRL 修饰符的情况下向选择添加和删除行 方法 public void changeSelection int rowIndex int columnIndex boolean
  • 使用VBA从PPT中提取文本并将其粘贴到Excel中

    我需要从 PowerPoint 演示文稿中的文本框中提取数据 并将它们放入 Excel 工作表中的相应单元格中 我已经搜索过但找不到合适的解决方法 此代码用于打印幻灯片中的文本 我不明白如何在 Excel 单元格中排列它 Dim oPApp
  • 从 neo4j 中删除标签引用

    在从电子表格导入大量数据时 我尝试使用标签约定 其中节点大写 如 This 关系标签标记为 THIS 在一个例子中 我不小心对一组节点使用了关系标签格式 然后我删除了这些节点并使用正确的标签格式重新导入它们 附带问题 有没有办法重命名我没有
  • 地点详细信息 API 的短名称的更改

    Google 响应的格式是否发生变化 几天以来 当我使用与国家 地区对应的 place id 参数查询 API 时 我不再获得任何国家 地区代码 alpha2 例如 Query for France http maps googleapis
  • 线程处理时文本框不会更新

    这是名为 Blahing 的模块内的子代码 Sub BlahBlah ByVal Count As Long For i As Long 0 To Count frmBlaher txtBlah Appendtext Blah Next E
  • 用波浪边框 SVG 路径填充 div

    我想填写 div 使用颜色并向边框添加阴影 但我的代码正在执行此操作 我实际上需要它 如图所示 div
  • 为什么在cmd中使用“set var = text”命令后没有“echo %var%”字符串输出? [复制]

    这个问题在这里已经有答案了 我在 cmd 中设置了一个变量set命令 并尝试echo it 这是一个例子 C Users Logan gt set var text C Users Logan gt set var var text C U
  • OpenCV视频采集和fps问题

    我正在 MacOSX 上使用 OpenCV 从网络摄像头捕获视频 它工作正常 但当我尝试在 QuickTime 上播放我捕获的视频时 它播放得太快了 即我从相机捕获 10 秒 但当我在 QuickTime 上播放时 视频为 2 秒 我尝试将
  • 如何使用Python创建Windows服务

    我编写了一个 python 脚本 它将作为 Windows 服务安装 下面是代码 import datetime import logging from logging handlers import RotatingFileHandler
  • ActionScript 中的普通对象和强类型对象哪个更快?

    So is public var user Object user firstName Bill user lastName Cosby 比我有像 User 这样的值对象慢吗 var user User new User user firs
  • 如何从服务器读取消息? (TCP)

    客户端写入服务器 服务器读取 服务器写入客户端 客户端不读取 Server using System using System Text using System Net using System Net Sockets using Sys
  • 为什么Java中的“this”关键字是final的? [复制]

    这个问题在这里已经有答案了 这似乎是一件几乎没有人意识到的事情 但Java中的 this引用 是最终的 在正常的编程日中 我认为我可以通过在自己的类中重新定义 this 引用来重新定义整个实例 public void method this