为什么重载通常不会在运行时实现?
基于实际(未声明的)参数类型,允许语言在运行时选择重载实现有哪些困难/含义?
答案 0 :(得分:0)
必须在编译时解决重载,因为在运行时解析方法调度可能不明确。
想象一下以下代码段(有效且可编译的Java程序):
public class Test {
public static void main(String[] args) {
Object object = new Clazz();
method(object);
}
static class Clazz implements Interface1, Interface2 {}
interface Interface1 {}
interface Interface2 {}
private static void method(Object o) {}
private static void method(Interface1 i) {}
private static void method(Interface2 i) {}
}
如果在运行时真的会解决重载,那么调用哪个方法Clazz
实现两个接口都是不明确的。