Перегрузка метода Java, вызываемая через интерфейс

Я уверен, что это элементарно, но я в тупике. Пример сильно упрощен, но сводится к следующему. У меня есть некоторые перегруженные методы в таком классе:

public void build(MyImplOneOfAnInterface item);
public void build(MyImplTwoOfAnInterface item);

Затем у меня есть другой метод, который выполняет следующие действия:

public void buildIt(MyInterface item) {
     build(item);
}

Когда я пытаюсь скомпилировать, я получаю следующую ошибку:

не удается найти символ

Это потому, что JVM не может определить реализацию интерфейса во время компиляции, чтобы знать, какой перегруженный метод вызывать.

Как это можно решить во время выполнения? Похоже, что JVM должна быть в состоянии это выяснить.

PS : Я не хочу определять метод, который принимает интерфейс в качестве аргумента, а затем выполняет кучу операторов if / else с использованием операторов instanceof.

5
задан c00kiemon5ter 18 July 2011 в 15:51
поделиться