Сериализация объекта из внешнего API - PullRequest
0 голосов
/ 22 декабря 2011

Я получаю исключение java.io.NotSerializableException.

Как я могу сериализовать объект, который не реализует java.io.Serializable?

Я хотел бы сериализовать его в потоке.

Я хочу сериализовать объект из внешнего API. Я не могу изменить этот API.

Во внешнем API этот объект не реализует java.io.Serializable

Конечно, есть приватные поля, но есть много методов получения и установки. Есть открытые статические поля, и нет конструктора без аргументов, на самом деле, нет конструктора.

Я думаю, что это трудно сериализовать, не так ли? Любое предложение?

Ответы [ 2 ]

1 голос
/ 22 декабря 2011

если вы можете переопределить внешний API, вы можете создать свой собственный класс, который является дочерним по отношению к внешнему классу.

Ваш дочерний класс может реализовывать интерфейс Serializable, и вы можете сериализовать свой класс.Для бывших

ур внешний класс

class ExternalAPIClass
{
..
..
}

Class MyClass extends ExternalAPIClass implements Serializable
{

....
...
...
}
0 голосов
/ 22 декабря 2011

Из того, что я понимаю из вашего вопроса, вы можете создавать новые экземпляры этого объекта и устанавливать их поля с помощью установщиков. Затем я предлагаю вам использовать геттеры для извлечения всех полей объекта в карту, а затем сериализовать эту карту.

Позже вы десериализуете карту, создаете новый экземпляр объекта и возвращаете все поля обратно установщикам.

Конечно, это при условии, что нет никакого поля только для чтения, которое устанавливается во время создания, например, ID. Потому что в этом случае идентификаторы будут другими.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...