я следующий код:Сериализация объектов (Java)
import java.io.*;
public class TestSer {
public static void main(String[] args) {
SpecialSerial s = new SpecialSerial();
try {
ObjectOutputStream os = new ObjectOutputStream(new FileOutputStream("myFile"));
os.writeObject(s); os.close();
System.out.print(++s.z + " "); ...(1)
ObjectInputStream is = new ObjectInputStream(new FileInputStream("myFile"));
SpecialSerial s2 = (SpecialSerial)is.readObject();
is.close();
System.out.println(s2.y + " " + s2.z);
} catch (Exception x) {
System.out.println("exc");
}
}
}
class SpecialSerial implements Serializable {
transient int y = 7;
static int z = 9;
}
Теперь, когда я побежал код, выход был "10 0 10". Но почему это «10 0 10», а не «10 0 0»? Я имею в виду, когда я десериализовал объект, y и z (будучи временными и static resp) должны были возвращаться как 7 и 9, которые являются значениями по умолчанию (пожалуйста, исправьте меня в этот момент, потому что я думаю, что значения, которые получает объект после десериализации являются значениями по умолчанию). И что означает синтаксис «++ object.var» (см. (1)). Это то же самое, что «Object var ++», то есть «++ s.z», то же самое, что и «s.z ++»?
+1, но для статики нет «десериализованного значения из файла», поэтому ничего не должно «иметь приоритет над». – EJP