Расширение или добавление новых классов во время выполнения в Java - PullRequest
5 голосов
/ 18 июня 2009

Есть ли способ добавить (или расширить существующие) классы во время выполнения в Java. Я застрял в проблеме, в которой я должен расширить существующий класс во время выполнения и добавить его в classpath, чтобы этот новый класс был выбран.

спасибо,

Ответы [ 3 ]

11 голосов
/ 18 июня 2009

Есть несколько способов сделать это.

  • Скомпилируйте исходный код во время выполнения, используя пакет javax.tools , а затем загрузите их, используя ClassLoader .
  • Если вы пишете в интерфейсы, вы можете декорировать классы с помощью Proxy .
  • Пройдите по более сложному пути манипуляции / генерации байт-кода с использованием технологии, подобной BCEL или ASM (последняя имеет более современную поддержку языковых функций, таких как аннотации) и затем загрузите класс с ClassLoader.

Полагаю, есть и другие варианты.

4 голосов
/ 18 июня 2009

Возможно, вы захотите посмотреть на BCEL . Без дополнительной информации о том, что вам нужно сделать, сложно дать более конкретный ответ.

0 голосов
/ 18 июня 2009

Вы обязательно должны написать, зачем вам эта функция. Если вы попытаетесь добавить или заменить логику во время выполнения, возможно, вы захотите взглянуть на API сценариев и некоторые реализации .

.
...