Si on a un attribut transient et final à la fois, quand on récupère l'objet sérialisé, on a l'attribut à null, et on peut pas le réinitialiser
Y'a-t-il une solution?
Ceci affiche null...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 public class TestSerializable implements Serializable { private transient final List<String> s = new ArrayList<String>(); public TestSerializable() { s.add("abc"); s.add("def"); } public static void main(String...args) throws Exception { TestSerializable ser = new TestSerializable(); ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(new File("test.dat"))); oos.writeObject(ser); oos.close(); ObjectInputStream ois = new ObjectInputStream(new FileInputStream(new File("test.dat"))); TestSerializable res = (TestSerializable)ois.readObject(); System.out.println(res.s); } }
Partager