Моя задача состоит в том, чтобы копировать объекты из ClassB
из ClassLoaderB
в ClassA
в ClassLoaderA
. ClassLoaderA
является ребенком ClassLoaderB
.Копирование объектов между загрузчиков классов
Я пытался использовать сериализацию и сохранили класс ClassB
ByteArrayOutputStream baos = new ByteArrayOutputStream();
ObjectOutputStream oos = new ObjectOutputStream(baos);
oos.writeObject(ClassB);
Следующий шаг будет читать этот объект в ClassA
из ClassLoaderA
. Как я могу это сделать?
UPD:
Вот как десериализации объект:
//Resurrection
ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray());
ObjectInputStream ois = new ObjectInputStream(bais);
try {
Object b1 = ois.readObject();
ois.close();
ClassA a1 = (ClassA) b1;
} catch (Exception e) {
e.printStackTrace();
}
Проблема заключается в том, что существует ClassCastException в строке:
ClassA a1 = (ClassA) b1;
Вы можете скопировать объект ClassB в переменную ClassA только в том случае, если ClassB расширяет ClassA, иначе вы будете иметь ошибки компиляции или ClassCastExceptions. –