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

Рейтинг: 3Ответов: 1Опубликовано: 29.01.2015

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

Ответы

▲ 1Принят

Да какие проблемы то?

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(); //список конструкторов
//ну и т.п.

Далее уже надеюсь понятно? Есть конструктор, есть методы: создаем объект, вызываем его методы ну и т.д.