Возможно ли в 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(); //список конструкторов //ну и т.п. Далее уже надеюсь понятно? Есть конструктор, есть методы: создаем объект, вызываем его методы ну и т.д.
Комментариев нет:
Отправить комментарий