Отключить переходный элемент объекта к ненулевому умолчанию в Java
public class MyObj implements Serializable {
private transient Map<String, Object> myHash = new HashMap<String, Object>();
...
}
Есть ли способ гарантировать, что, когда объект класса выше десериализован, член myHash будет установлен на новую пустую карту, а не на значение null?
Ответы
Ответ 1
public class MyObj implements Serializable {
private transient Map<String, Object> myHash = new HashMap<String, Object>();
private void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException {
in.defaultReadObject();
myHash = new HashMap<String, Object>();
}
}
Ответ 2
Как насчет добавления метода readObject:
public class MyObj implements Serializable {
private transient Map<String, Object> myHash = new HashMap<String, Object>();
...
private void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException {
in.defaultReadObject();
myHash = new HashMap<String, Object>();
}
}
Это должно решить вас.
Ответ 3
Вы можете реализовать свой собственный метод readIn
и явно создать новый Map<T>
, как описано в Java Serializable documentation. Эта статья должна описывать, как делать то, что вы ищете; в разделе Настроить протокол по умолчанию.