为什么在运行时没有实现重载?

时间:2015-03-14 19:15:05

标签: java runtime overloading

为什么重载通常不会在运行时实现?
基于实际(未声明的)参数类型,允许语言在运行时选择重载实现有哪些困难/含义?

1 个答案:

答案 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实现两个接口都是不明确的。