Как сделать сериализуемый класс, если он включает поле «Объект»

1
public class A implements Serializable
{
    private static final long serialVersionUID = 1L;
    private Object value;
    private Type type;
....
}

Он включает в себя "Объект", который не является сериализуемым, поэтому класс A будет отображаться как не сериализуемый.

"Значение объекта" может быть целым, String..., в зависимости от типа "Тип"

Как сделать сериализуемым? Заранее спасибо!

EDIT: Будет ли теряться "значение объекта" (при де-сериализации) при использовании "частного значения переходного объекта"? Я не хочу его потерять.

Существует ли общий сериализуемый тип объекта?

  • 0
    У Java есть специальное ключевое слово для этого, переходный процесс.
Теги:

3 ответа

3

"Значение объекта" может быть целым, String...

Целое и String являются сериализуемыми. Это будет работать. Вам не нужно ничего делать, чтобы сериализовать их.

Существует ли общий сериализуемый тип объекта?

Да, Serializable:

private Serializable value;
  • 0
    Я попытался отправить A как сообщение через сеть (в очередь JMS) и получил исключение Not Serializable.
  • 0
    @ user2179277 Тогда вы пытались сериализовать что-то еще, кроме Integer или String. Но и Integer, и String являются сериализуемыми.
Показать ещё 5 комментариев
1

Вы можете использовать ключевое слово transient, чтобы пропустить сериализацию поля:

private transient Object value;
  • 0
    Спасибо, Юванис. Будет ли "Значение объекта" потеряно (при десериализации) при использовании "частного переходного значения объекта"? Я не хочу потерять это.
  • 0
    @ user2179277: переменная, которая не будет разрешена для сериализации объекта. так что состояние значения всегда будет по умолчанию после десериализации. Например, значение переменной x установлено равным 9, значение по умолчанию равно 0, скажем, когда объект был сериализован со значением x, равным 9, после десериализации по умолчанию будет установлено значение 0.
0

transient серверы ключевых слов

private transient Object value;

Другой способ - сделать объект статическим, если он не представляет ваш экземпляр. статические переменные неявно transient.

Будет ли теряться "значение объекта" (при де-сериализации), если используется "значение частного переходного объекта"? Я не хочу его потерять.

Если вы не сериализуете переменную, ее значения будут потеряны. Сериализация сохраняет состояние экземпляра класса. Когда экземпляр будет десериализован, он будет иметь значение Object в нем, но оно будет инициализировано значением по умолчанию, то есть null. Таким образом, да, значение будет потеряно, что в любом случае является целью создания переменной переходного процесса.

  • 0
    Причина для понижения?

Ещё вопросы

Сообщество Overcoder
Наверх
Меню