【发布时间】:2012-11-22 18:17:08
【问题描述】:
我是 Java 新手,我有一些疑问。例如,考虑如下表达式:
a.method()
a.method("string")
人们称它们为“动态调度”。但我确信类型检查器确保名为 method(),method(String a) 的方法可用于对象 a。
但是为什么叫“动态”呢?不是静态调用吗?既然编译器已经发现了?
【问题讨论】:
-
究竟是谁在调用这个动态调度?也许有更多的上下文(例如被覆盖的方法,因为那部分是动态的。
-
重载判断是static,但潜在的多态代码是dynamic
-
没有人称其为“动态调度”,让我向你保证。除非他们不知道自己在说什么。
-
@pst 括号内参数的调度不是动态的,这就是 OP 所要求的,不是吗?
-
@pst 当我们显然同意除了 OP 实际要求的所有内容时,没有必要争论 :) 是的,当然,Java 是一种动态调度语言,但 OP 询问
method的调度是否在它带括号的参数可以称为“动态”。我们俩都同意不,它不能。
标签: java compiler-construction