2015-03-14 4 views
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 реализует оба интерфейса.

+0

Возможно, в динамическом языке, которым Java не является. – Crazyjavahacking

Смежные вопросы