Я пишу инструмент, который должен получить экземпляр java.io.Serializable
из массива байтов.
Сложность в том, что «настоящий» класс не является (и не может быть ...) на пути к классам (я не буду объяснять, почему здесь ..).
Приведенный ниже код не будет работать на is.readObject()
с ClassNotFoundException
, потому что класс реализации не на пути к классам
Q:
ли можно добиться этого? отражением? используя Unsafe
? используя подкласс класса ClassLoader
? или...?Как десериализовать экземпляр «Сериализация» без класса реализации в пути к классам?
byte[] data = ...
try (ObjectInputStream ois = new ObjectInputStream(new ByteArrayInputStream(data));) {
Object o = ois.readObject();
Serializable s = (Serializable)o;
}
* Возможно ли это достичь? * Не без реализации. Да, вы можете написать «ClassLoader» для загрузки класса. Но тогда вы снова нуждаетесь в классе. –
То же, что сказал Элиот. Сериализация Java отправляет данные только класса, а не самого класса (а не методы или определения того, что означают данные). Без класса вы потоплены. – markspace
Я хотел бы знать, почему downvotes ... «плохо» задать такой вопрос? или вызвали пользователей в ошибке? или дать ложный anser? Я так не думаю .. – titou10