2015-07-16 5 views
0

Я хотел бы манипулировать классы Java (с java расширения не .class), так что я мог:Манипулирование Java классы с Java

  • Удалить все методы класса (держащий конструктору)

  • Добавить нереализованные методы

  • Удаление неиспользуемых импортов

  • . ..

Есть ли API, который мог бы это сделать?

То, что я сделал до сих пор, пытается манипулировать файлами .java, такими как текстовые файлы (с regex, FileUtils и т. Д.).

С уважением. I

ответ

0

Если вы хотите, чтобы временно изменить классы (т.е. в пределах объема JVM), то вы можете сделать это с отражением:

What is reflection and why is it useful?

Если вы принимаете постоянно об изменении/создавая исходный код, то это, возможно, лучше всего сделать с помощью IDE. Большинство IDE расскажут вам о нереализованных методах и предоставят автоматическое завершение для их создания. Они также отформатируют исходный код, удаляют неиспользуемые импорты и т. Д.

+0

Отражение не помогло бы. Как указано: я хочу манипулировать файлами «.java», а не скомпилированными классами. Я хочу избежать использования IDE, поскольку я намерен создать сценарии, которые выполняют эту работу. Затем у меня есть тысячи классов, которые нужно изменить. – Patty

+1

Я думаю, что лучше всего будет делать это в среде IDE. Eclipse, Intelij и т. Д. Сделают это легко – robjwilkins

+0

Я знаю :) Но делать со сценарием было бы лучше;) – Patty

0

Да, вы можете использовать java reflection api. Пожалуйста, проверьте here

Позже изменить: Чтобы обновить структуру классов, вы можете использовать javassist. Here у вас есть пример.

+0

Как вы используете отражение для добавления нереализованных методов? – Patty

+0

Чтобы проверить структуру классов, вы можете использовать отражение, чтобы обновить класс, который вы можете использовать javassist (http://jboss-javassist.github.io/javassist/). –

0

Вы можете использовать регулярные выражения, то вопрос, то тогда, что регулярное выражение (А какие другие варианты есть!)

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

Смежные вопросы