Java如何调用对象的函数?

2023-12-04

从我之前和之后读到的内容来看.java文件编译为.class文件,每个对象都是简单的Object擦除后。例如

Foo f = new Foo();

编译为.class文件,反编译,则变为:

Object f = new Foo();

那么JRE在运行时是如何调用对象的函数的呢?该函数存储在内存中的什么位置?物体内部?或者使用类结构的层次结构并查找层次结构?


根据Java规范 and 维基百科

Java 类文件结构有 10 个基本部分:

  • 魔法数字:0xCAFEBABE
  • 类文件格式的版本:类文件的次要版本和主要版本
  • 常量池:类的常量池
  • 访问标志:例如类是否是抽象的、静态的等。
  • 这个班:当前班级名称
  • 超级级: 超类的名称
  • 接口:类中的任何接口
  • 字段:类中的任何字段
  • Methods:类中的任何方法
  • 属性:类的任何属性(例如源文件的名称等)

在运行时,检索对象的类型、其类文件(或者更确切地说,虚方法表) 检查所调用方法的实现。如果该类没有这样的实现,则检查父类(从超类条目中检索),依此类推,如果没有找到,则最终失败。

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

Java如何调用对象的函数? 的相关文章

  • 如何默认将 Maven 插件附加到阶段?

    我有一个 Maven 插件应该在编译阶段运行 所以在项目中consumes我的插件 我必须做这样的事情
  • Java EE:如何获取我的应用程序的 URL?

    在 Java EE 中 如何动态检索应用程序的完整 URL 例如 如果 URL 是 localhost 8080 myapplication 我想要一个可以简单地将其作为字符串或其他形式返回给我的方法 我正在运行 GlassFish 作为应
  • Java JDBC:更改表

    我希望对此表进行以下修改 添加 状态列 varchar 20 日期列 时间戳 我不确定该怎么做 String createTable Create table aircraft aircraftNumber int airLineCompa
  • Android:捕获的图像未显示在图库中(媒体扫描仪意图不起作用)

    我遇到以下问题 我正在开发一个应用程序 用户可以在其中拍照 附加到帖子中 并将图片保存到外部存储中 我希望这张照片也显示在图片库中 并且我正在使用媒体扫描仪意图 但它似乎不起作用 我在编写代码时遵循官方的Android开发人员指南 所以我不
  • 加速代码 - 3D 数组

    我正在尝试提高我编写的一些代码的速度 我想知道从 3d 整数数组访问数据的效率如何 我有一个数组 int cube new int 10 10 10 我用价值观填充其中 然后我访问这些值数千次 我想知道 由于理论上所有 3d 数组都存储在内
  • 列出jshell中所有活动的方法

    是否有任何命令可以打印当前 jshell 会话中所有新创建的方法 类似的东西 list但仅适用于方法 您正在寻找命令 methods all 它会打印所有方法 包括启动 JShell 时添加的方法 以及失败 被覆盖或删除的方法 对于您声明的
  • 操作错误不会显示在 JSP 上

    我尝试在 Action 类中添加操作错误并将其打印在 JSP 页面上 当发生异常时 它将进入 catch 块并在控制台中打印 插入异常时出错 请联系管理员 在 catch 块中 我添加了它addActionError 我尝试在jsp页面中打
  • 我可以使用 HSQLDB 进行 junit 测试克隆 mySQL 数据库吗

    我正在开发一个 spring webflow 项目 我想我可以使用 HSQLDB 而不是 mysql 进行 junit 测试吗 如何将我的 mysql 数据库克隆到 HSQLDB 如果您使用 spring 3 1 或更高版本 您可以使用 s
  • Spring @RequestMapping 带有可选参数

    我的控制器在请求映射中存在可选参数的问题 请查看下面的控制器 GetMapping produces MediaType APPLICATION JSON VALUE public ResponseEntity
  • 如何在PreferenceActivity中添加工具栏

    我已经使用首选项创建了应用程序设置 但我注意到 我的 PreferenceActivity 中没有工具栏 如何将工具栏添加到我的 PreferenceActivity 中 My code 我的 pref xml
  • 十进制到八进制的转换[重复]

    这个问题在这里已经有答案了 可能的重复 十进制转换错误 https stackoverflow com questions 13142977 decimal conversion error 我正在为一个类编写一个程序 并且在计算如何将八进
  • 从 127.0.0.1 到 2130706433,然后再返回

    使用标准 Java 库 从 IPV4 地址的点分字符串表示形式获取的最快方法是什么 127 0 0 1 到等效的整数表示 2130706433 相应地 反转所述操作的最快方法是什么 从整数开始2130706433到字符串表示形式 127 0
  • Java Integer CompareTo() - 为什么使用比较与减法?

    我发现java lang Integer实施compareTo方法如下 public int compareTo Integer anotherInteger int thisVal this value int anotherVal an
  • 如何在 javadoc 中使用“<”和“>”而不进行格式化?

    如果我写
  • Java执行器服务线程池[关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 如果我使用 Executor 框架在
  • 无法捆绑适用于 Mac 的 Java 应用程序 1.8

    我正在尝试将我的 Java 应用程序导出到 Mac 该应用程序基于编译器合规级别 1 7 我尝试了不同的方法来捆绑应用程序 1 日食 我可以用来在 Eclipse 上导出的最新 JVM 版本是 1 6 2 马文 看来Maven上也存在同样的
  • 如何从指定日期获取上周五的日期? [复制]

    这个问题在这里已经有答案了 如何找出上一个 上一个 星期五 或指定日期的任何其他日期的日期 public getDateOnDay Date date String dayName 我不会给出答案 先自己尝试一下 但是 也许这些提示可以帮助
  • Java列表的线程安全

    我有一个列表 它将在线程安全上下文或非线程安全上下文中使用 究竟会是哪一个 无法提前确定 在这种特殊情况下 每当列表进入非线程安全上下文时 我都会使用它来包装它 Collections synchronizedList 但如果不进入非线程安
  • 如何在桌面浏览器上使用 webdriver 移动网络

    我正在使用 selenium webdriver 进行 AUT 被测应用程序 的功能测试自动化 AUT 是响应式网络 我几乎完成了桌面浏览器的不同测试用例 现在 相同的测试用例也适用于移动浏览器 因为可以从移动浏览器访问 AUT 由于它是响
  • 静态变量的线程安全

    class ABC implements Runnable private static int a private static int b public void run 我有一个如上所述的 Java 类 我有这个类的多个线程 在里面r

随机推荐

  • 测试 Postgres 表分区的 HASH 函数

    我正在使用 Postgres 11 并且想在主键是 UUID 的表上使用哈希分区 我知道我需要预先选择多个分区 并且主键上的哈希函数的模数将用于将行分配给每个分区 像这样的事情 CREATE TABLE new table id uuid
  • Webpack FOSJsRoutingBundle 与 Symfony Flex 和 Angular 集成

    我不明白FOSJs路由包跟 共事Symfony Flex Webpack and AngularJS 我已经在 Symfony 3 和 AngularJS 中使用这个包很长时间了 从来没有出现过问题 但随着 Symfony Flex 中引入
  • System.Runtime.InteropServices.COMException:检索 CLSID 为 {58968145-CF05-4341-995F-2EE093F6ABA3} 的组件的 COM 类工厂失败

    我正在运行一个 C 应用程序 并且正在使用 DSOFile dll 项目中引用了该DLL 我可以在我的开发机器上运行该exe 但是当我在另一台机器上运行 exe 时 我得到了 未处理的异常 System Runtime InteropSer
  • 有没有办法改变包装时物品的顺序?

    我正在尝试创建一个网站的一部分 由 3 个部分组成 我们称它们为 A B C 其中 A 和 B 彼此相邻 对齐以接触容器的相对两侧 它们下面是 C 但是当 A 和 B 在容器中无法并排放置时 B 会包裹在 C 下方 而不是包裹在 A 和 C
  • 错误:“}”中出现意外的“}”[重复]

    这个问题在这里已经有答案了 我有以下代码 TB lt data frame 1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 9 TB BIG value lt apply TB 1 function r sr lt so
  • 偶数斐波那契数之和 < X

    我正在研究这个 我似乎有一个可行的解决方案 但我很难理解它的行为 这是我所拥有的 usr bin python def even fib sums limit number 1 last 0 before last 0 total 0 fo
  • F# 异步显示 WPF 窗口

    这个问题一直让我抓狂 总体要点如下 我的解决方案中有两个项目 第一个是 F 控制台应用程序 第二个是 C 库 其中包含名为的 C XAML 类DisplayWindow继承自 WPF 窗口 DisplayWindow有一个方法public
  • 注销后的 JSF 生命周期

    我正在使用基于表单的身份验证 我有一个注销链接 如下所示
  • 如何返回一个字符串?

    import java util public class HangManP5 public static void main String args int attempts 10 int wordLength boolean solve
  • IllegalArgumentException,从 s3 而不是 hdfs 指定输入/输出时出现错误的 FS

    我一直在本地集群上运行 Spark 作业 该集群具有 hdfs 从中读取输入并写入输出 现在我已经设置了一个 AWS EMR 和一个 S3 存储桶 其中有我的输入 并且我希望我的输出也写入 S3 错误 用户类抛出异常 java lang I
  • Mac 和 iPhone 开发书籍 2009 [已关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心以获得指导 目前关于 Mac 和 iP
  • 用于从 [string] 解析输入参数-值对的本机机制

    是否有一个本机内置构造可以使用与 cmdlet 参数相同的规则自动将控制台输入解析为变量 例如 许多 cmdlet 接受以下形式的参数值对 parameter1 unspaced value1 parameter2 spaced value
  • Swift 3,元类型问题中的“.self”实际上正确吗?

    我有一个扩展可以沿着视图控制器链 甚至通过容器视图 这非常方便 public extension UIViewController go up to a certain class public func above
  • #1060 - 重复的列名

    为什么这个查询会出错 1060 Duplicate column name studentID 在 MySQL 中 我该如何预防 CREATE TEMPORARY TABLE tempTable select from member inf
  • Html 5 Canvas 完整箭头

    我正在使用 wPaint 插件 并尝试添加更多功能 我需要的是一条以 箭头 结尾的画线 我已经尝试了几乎所有我能想到的东西 但我只能得到箭头的一半 想象 这是绘制线条的函数 带有半箭头 drawArrowMove function e se
  • GCM.jar android studio

    现在我收到这个错误 Could not find gcm jar Please install the Android SDK Extra Google Cloud Messaging for Android Library using t
  • 将产品缩略图添加到我的帐户 - 最近的订单 - Woocommerce

    我想知道是否有办法将产品缩略图添加到 Woocommerce 前端 我的帐户 中买家的 最近订单 页面中 我一直在尝试寻找某种解决方案 但始终没有运气 我没有尝试过任何方法来给你一个代码 只是因为我不知道如何 实际上去解决这个问题 有人能指
  • 将 CA 签名的证书导入到 JKS

    I got 4 crt来自 CA 的文件如下 AddTrustExternalCARoot crt COMODORSADomainValidationSecureServerCA crt COMODORSAAddTrustCA crt de
  • 将 JSON 文件导入 MS Access 表

    我正在尝试将 JSON 文件导入到 MS Access 表中 我在网上查了一下 发现这个堆栈溢出链接说明了这一点 自动将 JSON feed 解析到 MS Access 中我已经复制并粘贴了该字符串中的代码 并对其进行了修改以提取我的 JS
  • Java如何调用对象的函数?

    从我之前和之后读到的内容来看 java文件编译为 class文件 每个对象都是简单的Object擦除后 例如 Foo f new Foo 编译为 class文件 反编译 则变为 Object f new Foo 那么JRE在运行时是如何调用