java - 方法如何在运行时找到其对象的实例变量

标签 java object jvm

当创建一个对象并调用其公共(public)方法之一时,它可以使用本地属性。它们存放在哪里?我的意思是,在像 C 这样的语言中,一切都很清楚:要使用的变量必须作为参数传递给函数(或者必须是全局变量)。

它在 Java(以及其他 OO 语言)中发生了什么?本地方法如何使用实例的属性?

简而言之:当我们说this.variable时,方法如何找到自己的变量? “this”指针是否作为函数参数隐式传递?

最佳答案

你是对的:每个实例方法都是一个函数,它比显式声明的参数多声明一个参数。第一个参数始终是隐式的 this 引用(指针)。这只是被 Java 的语法略微掩饰了:

firstArg.method(secondArg, thirdArg)

只是另一种写法

method(firstArg, secondArg, thirdArg)

请注意第一个参数的特殊特征:它是唯一一个动态调度方法发生在其类型上的参数。

关于java - 方法如何在运行时找到其对象的实例变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20992009/

相关文章:

java - 条件 JIT 编译

java - 等待一系列脚本中的单个 Shell 脚本运行完成后再继续(Java、MySQL、JUnit)

java - 如何对可嵌入实体属性实现验证约束?

javascript - 合并两个对象及其内部的数组

java - Object类如何实现clone()方法

javascript - 如何在对象数组中查找多次出现并添加计数值?

java - JVM 或 JIT 是否能够减少重复的方法调用?

java - Java中查找嵌套对象的逻辑是什么?

java - 如何使用gradle导入依赖

实例化