Я пишу Java-Java компилятор Bytecode, компилируя код Jasmin и собираю его. Я создаю его с намерением, чтобы файлы исходного кода могли ссылаться и использовать классы Java-библиотеки (вы в значительной степени должны использовать для строк, печати и т. Д.). Моя проблема в том, как именно это делать.Компилятор байт-кода Java-Java: как получить информацию о библиотеке классов Java?
До сих пор я только что использовал ссылку на список всех классов библиотек, которые хранятся в текстовом файле в установочной папке Java (он просто перечисляет их пакеты и имена). Я использовал его при кодировании проверки парсера/типа, хотя это было не так идеально, поскольку средство проверки типов не могло выполнять проверку типов при использовании классов библиотек.
Это действительно проблема теперь, когда я работаю над генерацией кода, потому что, если вы хотите вызвать метод класса библиотеки, вы должны предоставить полную подпись метода - то, к которому у меня нет доступа.
Я блуждал, что совет людей будет о том, как продвигаться. Один из способов - пройти через все классы, создающие базу данных/список всех их параметров и возвращаемых типов. Очевидно, это было бы чрезвычайно трудоемким и, вероятно, слишком нереалистичным. Возможны ли другие, более элегантные подходы?
Спасибо, Will
P.S. Я использую Python для кодирования этого. Я полагаю, что если решение должно использовать Java-код, я могу запустить его как подпроцесс.
Да, я в конце концов пошел с этим вариантом. Я написал небольшую программу Java, которая принимает имена метода/поля и возвращает класс, к которому они принадлежат (если они существуют). Все это возможно в API Java Refleion API. –