Я хотел бы работать с классом, который доступен только в моей среде выполнения, и у меня нет файлов .java или .class. Единственный способ использовать его AFAIK - это отражение.Генератор кода оболочки оболочки Java?
Что я уже сделал, это написать небольшую программу, чтобы получить экземпляр Class
моего целевого класса, перебрать его общедоступные методы/поля и получить их подпись (аналогично this program). Это даст мне скелет исходного файла .java. Затем я вручную заполнил тела этих методов, чтобы они называли реальные методы, используя отражение. Так сделанный Java-файл скомпилирован javac вместе с моим кодом пользователя. Таким образом, я мог бы использовать целевой класс, не заполняя мой код с помощью методов/полей.
Вот мои вопросы:
- Есть ли определенный срок за то, что я пытаюсь сделать? («Генератор кода оболочки отражения Java» может быть?)
- Есть ли инструмент, который автоматизирует задачу, которую я делал вручную выше?
- Если нет, то каковы проблемы при создании такого инструмента?
«У меня нет файлов .class». Это звучит маловероятно. Вы строите класс в памяти, или как у вас нет файла класса? – Kayaman
Я бы сказал, что вы пытаетесь написать мостовой объект, который использует отражение для его создания. –
Звучит так, как будто вы создаете [Прокси] (http://docs.oracle.com/javase/7/docs/api/java/lang/reflect/Proxy.html) – OldCurmudgeon