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
Kostya Kozhevnikov
28 уровень
При включении методов вывод неверный
Решен
Комментарии (2)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Kostya Kozhevnikov
1 февраля 2020, 14:02
Точно,спасибо
0
ArturExpert
31 января 2020, 18:01решение
Попробуй перенести эти методы в класс ClassWithStatic
+2