【问题标题】:Java - Method Invocation & ExecutionJava - 方法调用和执行
【发布时间】:2011-01-30 00:32:01
【问题描述】:

方法的调用和执行有什么区别?两个是一回事吗?

【问题讨论】:

    标签: java terminology


    【解决方案1】:

    我认为这些不是标准术语。但是我通过以下方式理解它们:

    • invocation 是发出对方法的调用的事件;从技术上讲 - 将方法放入堆栈
    • 执行是运行方法的整个过程——从调用到完成。 执行时间是方法体运行的时间段。

    【讨论】:

      【解决方案2】:

      好吧,调用方法意味着通过它的名称和参数调用它;执行一个方法意味着执行它.. 运行它,逐行获取它的行并运行它们。

      【讨论】:

        【解决方案3】:

        我不知道这些的任何标准定义,但我的理解是:

        • invocation 是调用方法的行为
        • 执行是实际运行方法的行为

        调用导致执行。

        【讨论】:

          【解决方案4】:

          有一些细微的差别:

          • 上下文
            • 调用上下文与调用者相关联
              • 例如您用于调用方法的参数是实际参数
            • 执行上下文与被调用者相关联
              • 例如您在方法执行中使用的参数是形式参数
          • 动态调度
            • 方法调用可以导致执行许多方法中的任何一种
            • 一个执行方法就是一个执行方法
          • 顺序:调用先于执行
            • 调用方法不会立即开始执行
              • 想象一下,如果方法是远程的
              • 调用失败可能是由于连接中断、通过网络处理参数时出错等原因
            • 方法只有在调用成功后才开始执行

          另请参阅:Overview of Remote Method Invocation。当您认为该方法是远程的时,调用(开始执行某事的请求)和执行(如果请求成功则在某处发生的某事)之间的区别变得更加明显。

          还要考虑反射的情况。这是java.lang.reflect.Method的方法:

          public Object invoke(Object obj, Object... args) throws
            IllegalAccessException,   // failure during invocation
            IllegalArgumentException, // failure during invocation
            InvocationTargetException // invocation was successful,
                                         // but exception was thrown during execution
          

          这里也清楚地调用和执行是两个不同的东西。如果您需要更有说服力,请考虑在此反射上下文中调用与执行 NullPointerException 的情况:

          • 可以在调用过程中抛出,当obj == null方法为实例方法时
          • 它可以在执行期间被抛出,在这种情况下它将被包装为InvocationTargetException原因

          【讨论】:

          • 你有这些参考资料吗?尤其是上下文定义。
          【解决方案5】:

          据我所知:

          调用是执行的前置步骤。如果调用成功则执行过程开始...

          例如,

          参数(方法签名中声明的变量)只会在方法调用时创建,是执行的前置步骤。 调用后,实际的方法将被执行,即在方法执行过程中创建局部变量(方法体中声明的变量)。

          所以参数在调用和局部变量在执行......

          因此,成功调用导致继续执行。

          【讨论】:

          • 我想清除这一点局部变量(方法体中声明的变量)会在方法执行过程中创建,变量是在代码过程中声明的编译阶段,只有在函数调用的情况下才会执行。
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-03-22
          • 1970-01-01
          • 2018-08-26
          • 2021-03-22
          • 1970-01-01
          相关资源
          最近更新 更多