У меня есть класс, определяющий тип неизменяемого значения, который мне теперь нужно сериализовать. Неизменность происходит от конечных полей, которые установлены в конструкторе. Я пробовал сериализацию, и она работает (на удивление?) - но я понятия не имею, как.
Вот пример класса
public class MyValueType implements Serializable
{
private final int value;
private transient int derivedValue;
public MyValueType(int value)
{
this.value = value;
this.derivedValue = derivedValue(value);
}
// getters etc...
}
Учитывая, что у класса нет конструктора без аргументов, как его можно создать и установить окончательное поле?
(Кроме того, я обратил внимание на этот класс, особенно потому, что IDEA не генерировала предупреждение проверки "no serialVersionUID" для этого класса, но все же успешно генерировал предупреждения для других классов, которые я только что сделал сериализуемыми.)