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

Why is overloading not implemented at runtime?

为什么重载一般不在运行时实现?
difficulties/implications 允许语言根据实际(未声明的)参数类型在运行时 select 重载实现的原因是什么?

重载必须在编译时解决,因为在运行时解决方法分派可能不明确。

想象以下片段(有效且可编译的 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 实现了两个接口。