Ищите код Java, реализующий алгоритм разрешения перегрузки javac

Предположим, у меня есть массив Objectс (в частности, Object[]) и массив объектов конструктора.

Кто-нибудь может отослать меня к какому-нибудь Java-коду, который может просматривать объекты Constructor и выбирать тот, который является наиболее конкретным по отношению к фактическим типам объектов в моем массиве. Другими словами, я хотел бы реализовать алгоритм, который javac используется для выбора из набора перегруженных методов.

1 ответ

Вы можете посмотреть в Java-компиляторе на основе Java (я слышал, что у OpenJDK есть такой).

Я думаю, вы обнаружите, что разрешение имен намного сложнее, чем вы себе представляете, особенно если вы включаете дженерики и стирание типов. Я сомневаюсь, что вы сможете "легко" поднять этот код и использовать его самостоятельно.

Большинство инструментов Java, которые делают что-либо семантически глубокое, используют файлы классов, в которых произошло стирание и разрешение всех типов, поэтому они могут не знать, как это сделать. (Недостатком просмотра только файлов классов является то, что эти инструменты вообще не могут изменять исходный код).

Другие вопросы по тегам