Страницы

Поиск по вопросам

вторник, 16 июля 2019 г.

Динамическая подгрузка и обновление классов в Java

Возможно ли в Java реализовать динамическое обновление класса? К примеру, в приложение подгружается класс, но через какое-то время нужно его обновить на более новую модификацию, не перезапуская все приложение целиком.


Ответ

Да какие проблемы то? ClassLoader classLoader = MyClass.class.getClassLoader(); Class myNewClass = classLoader.loadClass("mydomain.MyNewClass"); Предполагается, что объектник MyNewClass лежит в CLASSPATH, хотя можно и без этого. Можно даже скомпилировать MyNewClass из исходников :) Далее имея переменную myNewClass с помощью рефлексии уже можно перенумеровать новые методы и вызвать какой нужно. Update: Простенькие примеры рефлексии: Method[] methods=myNewClass.getMethods(); //список публичных методов класса Method method=myNewClass.getDeclaredMethod("getMyMethod", String.class); //получаем метод getMyMethod(String ) Constructor[] constructors=myNewClass.getConstructors(); //список конструкторов //ну и т.п. Далее уже надеюсь понятно? Есть конструктор, есть методы: создаем объект, вызываем его методы ну и т.д.

Комментариев нет:

Отправить комментарий