Ищите код Java, реализующий алгоритм разрешения перегрузки javac
Предположим, у меня есть массив Object
с (в частности, Object[]
) и массив объектов конструктора.
Кто-нибудь может отослать меня к какому-нибудь Java-коду, который может просматривать объекты Constructor и выбирать тот, который является наиболее конкретным по отношению к фактическим типам объектов в моем массиве. Другими словами, я хотел бы реализовать алгоритм, который javac
используется для выбора из набора перегруженных методов.
1 ответ
Вы можете посмотреть в Java-компиляторе на основе Java (я слышал, что у OpenJDK есть такой).
Я думаю, вы обнаружите, что разрешение имен намного сложнее, чем вы себе представляете, особенно если вы включаете дженерики и стирание типов. Я сомневаюсь, что вы сможете "легко" поднять этот код и использовать его самостоятельно.
Большинство инструментов Java, которые делают что-либо семантически глубокое, используют файлы классов, в которых произошло стирание и разрешение всех типов, поэтому они могут не знать, как это сделать. (Недостатком просмотра только файлов классов является то, что эти инструменты вообще не могут изменять исходный код).