|
1 | 1 | package pl.mperor.interview.tasks; |
2 | 2 |
|
3 | 3 | import org.junit.jupiter.api.AfterEach; |
| 4 | +import org.junit.jupiter.api.Assertions; |
4 | 5 | import org.junit.jupiter.api.BeforeEach; |
5 | 6 | import org.junit.jupiter.api.Test; |
6 | 7 |
|
7 | | -import java.io.ByteArrayOutputStream; |
8 | | -import java.io.PrintStream; |
| 8 | +import java.io.*; |
9 | 9 | import java.math.BigDecimal; |
| 10 | +import java.nio.file.Files; |
10 | 11 | import java.util.Arrays; |
11 | 12 | import java.util.Comparator; |
12 | 13 | import java.util.stream.IntStream; |
@@ -318,4 +319,36 @@ public void testInstanceofIsNull() { |
318 | 319 | assertFalse(null instanceof Object); |
319 | 320 | assertTrue("null" instanceof Object); |
320 | 321 | } |
| 322 | + |
| 323 | + @Test |
| 324 | + public void testStaticFieldsSerialization() throws IOException, ClassNotFoundException { |
| 325 | + // Can static variables be serialized in Java? |
| 326 | + |
| 327 | + var example = new Example(1); |
| 328 | + var file = Files.createTempFile("example", ".dat").toFile(); |
| 329 | + try (ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(file))) { |
| 330 | + oos.writeObject(example); |
| 331 | + } |
| 332 | + |
| 333 | + // Changes |
| 334 | + example.instanceVar = 2; |
| 335 | + Example.staticVar = 20; |
| 336 | + |
| 337 | + try (ObjectInputStream ois = new ObjectInputStream(new FileInputStream(file))) { |
| 338 | + Example deserialized = (Example) ois.readObject(); |
| 339 | + Assertions.assertEquals(1, deserialized.instanceVar); |
| 340 | + Assertions.assertEquals(20, Example.staticVar, "Static variables are not serialized"); |
| 341 | + } |
| 342 | + } |
| 343 | + |
| 344 | + static class Example implements Serializable { |
| 345 | + @Serial |
| 346 | + private static final long serialVersionUID = 1L; |
| 347 | + private static int staticVar = 10; |
| 348 | + private int instanceVar; |
| 349 | + |
| 350 | + Example(int instanceVar) { |
| 351 | + this.instanceVar = instanceVar; |
| 352 | + } |
| 353 | + } |
321 | 354 | } |
0 commit comments