Итак, для этого проекта я пытаюсь расширить класс во время выполнения. Что бы я хотел знать, возможно ли это? Если да, то как мне это сделать? Есть ли там библиотеки для этих вещей?Расширение класса во время выполнения
ответ
CGLib - это библиотека, которую вы ищете. Он довольно мощный в расширении классов или реализации интерфейсов во время выполнения, поэтому многие популярные фреймворки, такие как Spring или Hibernate, используют его.
Вы можете создать расширение класса с кодом, как
public Object createProxy(Class targetClass) {
Enhancer enhancer = new Enhancer();
enhancer.setSuperclass(targetClass);
enhancer.setCallback(NoOp.INSTANCE);
return enhancer.create();
}
хотя вы, вероятно, заменить NoOp
обратный вызов с полезным методом перехватчика с требуемой логикой.
Awesome, спасибо! – PaulBGD
Ответ зависит от того, что вы имеете в виду под «расширить класс». В java «extend» означает объявление другого класса, который расширяет первый (является подклассом). Поэтому, если вы хотите создать подкласс данного класса, это возможно - просто подготовьте массив байтов, представляющий подкласс, и передайте его загрузчику класса.
Если вы хотите добавить поля или методы в существующий класс, это возможно только в момент загрузки этого класса и выполняется путем замены представления массива байтов. Если класс уже загружен, вы никак не можете его изменить.
Я просто хотел динамически выбирать, какой класс расширять (поскольку classpath к классу постоянно изменяется). – PaulBGD
- 1. Расширение класса во время выполнения
- 2. Расширение класса во время выполнения
- 3. Java: расширение класса во время выполнения
- 4. класса во время выполнения
- 5. Динамическое расширение типа во время выполнения?
- 6. Скомпилировать расширение кода C# во время выполнения
- 7. Как выполнить расширение openJPA во время выполнения?
- 8. Расширение/изменение классов NHibernate во время выполнения
- 9. Как отключить расширение формы во время выполнения?
- 10. Заменить реализацию класса COM во время выполнения
- 11. члены класса Создание во время выполнения - C#
- 12. Генерация класса из XSD во время выполнения
- 13. C# Изменение метода класса во время выполнения
- 14. Измените метод класса C# во время выполнения
- 15. Как читать атрибут класса во время выполнения?
- 16. ClassNotFoundException для класса BrowserView во время выполнения
- 17. Создание объекта класса во время выполнения Python
- 18. Выбор производного класса во время выполнения
- 19. Проверка класса Scala во время выполнения
- 20. Получите общий тип класса во время выполнения
- 21. Как изменить определение класса во время выполнения?
- 22. Динамическая загрузка класса во время выполнения
- 23. Изменение суперкласса класса во время выполнения
- 24. Изменение типа класса во время выполнения
- 25. Наследуйте новый метод класса во время выполнения
- 26. Создание класса динамически во время выполнения
- 27. Знать размер класса во время выполнения
- 28. Создание класса во время выполнения в Android
- 29. Установить свойство класса во время выполнения
- 30. Определение производного типа класса во время выполнения
Почему бы вам не хотеть этого? Просьба уточнить прецедент. Я сомневаюсь, что это возможно. –