`
小牧童
  • 浏览: 8920 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

Java方法调用过程

阅读更多
在学习Java过程中,弄清调用对象方法执行过程十分重要。

以下为调用的详细过程:

    1.编辑器查看对象的声明类型和方法名。假如调用obj.x(param),并且obj被声明为C类的对象,由于Java方法重载这一特性,在C类中可能存在多个方法名为x、参数类型不同的方法。编辑器会列举出C类中所有名为x的方法以及C类的父类中访问属性不为private的名为x的方法。至此编辑器获取所有可能被调用的候选方法。

    2.编辑器将查看调用方法时的参数类型。在之前获取到的候选方法列表中存在与调用方法参数完全匹配,那么就调用这个方法。这个过程被称为重载解析(overloading resolution)。例如:对于调用obj.x("hello")来说,编辑器将会挑选x(String),而不是x(int)。
     至此,编辑器获取到了需要调用的方法名称和参数类型。(方法名称和参数类型被称为方法签名。)

    3.如果方法是private、static、final或者构造器,那么编辑器可以准确的知道调用哪个方法,这种方式称为静态绑定。与之对应的是,调用哪个方法将依赖于具体的参数类型,并且在运行时动态绑定。如obj.x("hello")。

    4.当程序运行时,并且采用动态绑定调用方法时,虚拟机一定调用与obj所引用的实际类型最为合适的那个方法。假设obj的实际类型为D,D类是C类的子类。如果D类定义了x(String)方法,则直接调用它,否则,将在D类的超类C类中寻找方法x(String)。
    每次调用方法都要进行搜索,时间的开销非常大。因此,虚拟机预先为每个类创建了一个方法表。其中列出了所有的方法的签名,这样在每次真正调用方法的时候,虚拟机仅查找这个方法表就可以了。
0
0
分享到:
评论
1 楼 瓶鱼跃 2012-12-13  
为什么前面三条石编辑器,后面一条又变成虚拟机了??编辑器是个什么东西?

相关推荐

    java调用存储过程

    java,调用存储过程java,调用存储过程java,调用存储过程java,调用存储过程java,调用存储过程java,调用存储过程java,调用存储过程java,调用存储过程java,调用存储过程java,调用存储过程java,调用存储过程

    java 调用存储过程

    值得注意的是,上述代码中的文件名列表(如Project1.cfg、Unit1.dcu等)与Java调用存储过程无关,它们看起来像是Delphi或FreePascal项目的文件,这些文件通常用于描述项目配置、单元信息、表单布局等,而不是与Java...

    java调用存储过程(含out参数)

    在Java编程中,调用数据库的存储过程是常见的任务,特别是在处理复杂的业务逻辑或需要高效数据操作时。本文将详细讲解如何在Java中调用含有`OUT`参数的存储过程,帮助开发者解决这类问题。 首先,理解存储过程的...

    java调用oracle存储过程或者函数

    在调用过程中,可能会遇到SQL异常或其他运行时异常,需要使用try-catch-finally结构进行异常处理。捕获`SQLException`,根据错误码或异常信息进行相应的处理。 五、批处理调用 如果需要调用多个存储过程或函数,...

    Java调用存储过程--传入集合参数

    ### Java调用存储过程——传入集合参数:深入解析与实践 #### 核心知识点概览 在Java应用中,调用数据库存储过程时,往往需要处理复杂的参数传递,特别是当参数为集合类型时,这一过程变得更加具有挑战性。本文将...

    Java调用存储过程的2种方法

    ### Java调用存储过程的两种方法 在Java中调用数据库中的存储过程是常见的操作之一,这不仅可以提高程序性能和代码可维护性,还可以更好地利用数据库的功能。根据提供的标题、描述以及部分内容,本文将详细介绍Java...

    java动态调用方法

    Java动态调用方法是Java反射机制的一个重要应用,它允许我们在程序运行时,根据需要动态地获取类的信息并调用其方法。这种能力为代码的灵活性和可扩展性提供了强大的支持,尤其在处理不确定的对象类型或者需要在运行...

    JAVA调用存储过程

    ### JAVA调用存储过程知识点详解 #### 一、无结果集返回的存储过程调用 在Java中调用不返回结果集的存储过程时,主要步骤包括建立连接、准备调用语句、设置输入参数、执行存储过程以及处理可能产生的警告信息。 1...

    groovy和Java相互调用1

    Java调用Groovy类则稍微复杂一些,通常有两种主要方法: 1. **方法1:直接调用** - 如果你的开发环境(如IntelliJ IDEA或Eclipse)已经安装了Groovy解释器插件,那么可以直接在Java代码中像调用Java类一样调用...

    Java实现调用MySQL存储过程详解

    在Java应用程序中,可以通过Java Database Connectivity (JDBC) API来调用MySQL的存储过程。 首先,确保你已经安装了MySQL数据库,并且在数据库中创建了一个或多个存储过程。例如,`findAllBook`、`pro_test`和`pro...

    java调用存储过程实例

    ### Java调用存储过程实例:详解 #### 存储过程简介 存储过程是一种在数据库中编写的SQL程序,可以接受输入参数,执行一系列操作,并返回结果或输出参数。它们可以提高应用程序的性能、安全性和复用性。在Oracle...

    三种方式实现java远程调用(rmi),绝对可用

    在提供的压缩包文件中,"三种方式(原始方式_spring_jndi)实现java远程调用(rmi)"包含了相关的示例代码,帮助开发者理解并实践这三种RMI实现方法。在MyEclipse或其他Java开发环境中导入这些代码,可以进行调试和...

    java 调用存储过程总结

    java 调用存储过程 总结 创建表 创建存储过程 创建java程序调用

    java调用c#样例

    标题"java调用c#样例"指的是使用Java语言通过Jacob库调用C#编写的动态链接库(DLL)。C# DLL通常包含.NET Framework中的方法和功能,而Java应用程序可以借助Jacob库来访问这些功能,从而实现跨语言的互操作性。 ...

    java远程方法调用

    ### Java远程方法调用(RMI):深入解析与实践 #### 一、RMI概念与原理 Java远程方法调用(Remote Method Invocation,简称RMI)是Java平台提供的一种分布式计算模型,允许一个Java虚拟机(JVM)上的对象通过网络...

    C#调用JAVA方法

    本篇文章将详细探讨如何在C#中调用Java方法,以及与之相关的技术,包括IKVM.NET。我们将通过提供的资源,即“UseJAVA.rar”和“JAVADemo.rar”,来了解具体的实现过程。 首先,让我们理解C#调用Java方法的基本原理...

    Java调用数据库存储过程[mysql测试通过]

    以上就是关于Java调用MySQL数据库存储过程的基础知识和实践操作,实际应用中可能需要考虑异常处理、连接池管理、多参数处理以及不同类型的存储过程返回值等复杂情况。熟练掌握这些技能,将有助于提升Java应用程序与...

    Java异步调用转同步方法实例详解

    Java异步调用转同步方法实例详解是指在Java中将异步调用转换为同步调用的技术,主要用于解决异步调用过程中的阻塞问题。异步调用是一种非阻塞的调用方式,调用方在调用过程中,不直接等待返回结果,而是执行其他任务...

    Java RPC调用示例

    首先,RPC的核心思想是将远程调用过程透明化,使得开发者可以像调用本地方法一样调用远程服务。这种抽象简化了分布式系统的设计和开发。在Java中,实现RPC通常包括以下几个关键步骤: 1. **定义服务接口**:RPC调用...

Global site tag (gtag.js) - Google Analytics