import java.io.*; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.io.Serializable; import java.util.*; public class Solution { public static class ClassWithStatic implements Serializable{ public static String staticString = "This is a static test string"; public int i; public int j; } private void writeObject(ObjectOutputStream stream) throws IOException { stream.defaultWriteObject(); stream.writeObject(ClassWithStatic.staticString); } private void readObject(ObjectInputStream stream) throws IOException, ClassNotFoundException { stream.defaultReadObject(); ClassWithStatic.staticString = (String) stream.readObject(); } public static void main(String[] args) throws Exception { File objectFile = File.createTempFile("objectWhithStaticFild.bin",null); ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(objectFile)); ObjectInputStream ois = new ObjectInputStream(new FileInputStream(objectFile)); ClassWithStatic first = new ClassWithStatic(); first.staticString = "22222"; oos.writeObject(first); oos.close(); first.staticString = "33333"; ClassWithStatic second = (ClassWithStatic) ois.readObject(); System.out.println(second.staticString); // у Вас будут разные надписи(в зависимости от наличия/отсутствия методов) ois.close(); } } Подскажите, почему в выводе все равно 33333, вместо 22222, хотя есть методы readobj,writeobj