Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

This compliant solution both avoids the possibility of incorrect serialization and protects sensitive data members from accidental serialization by declaring the relevant members as transient so that they are omitted from the list of fields to be serialized by the default serialization mechanism.

Code Block
bgColor#ccccff
public class Point {
public class Point {
 private transient double x; // declared transient
 private transient double y; // declared transient

 public Point(double x, double y) {
  this.x = x;
  this.y = y;
 }

 public Point() {
   // no-argument constructor
 }
}

public class Coordinates extends Point implements Serializable {
  public static void main(String[] args) {
    try {
      Point p = new Point(5,2);
      FileOutputStream fout = new FileOutputStream("point.ser");
      ObjectOutputStream oout = new ObjectOutputStream(fout);
      oout.writeObject(p);
      oout.close();
    } catch (Exception e) {
      // Forward to handler
    } finally {
      if (fout != null) {
        try {
          fout.close();
        } catch (IOException x) {
          // handle error
        }
      }
    }
  }
}

...

<ac:structured-macro ac:name="unmigrated-wiki-markup" ac:schema-version="1" ac:macro-id="ac84ff752d56f57b-0e27c742-46974dcc-ab959559-de04a5f42e1c38ee2e27cd73"><ac:plain-text-body><![CDATA[

[[Bloch 2005

AA. References#Bloch 05]]

Puzzle 83. Dyslexic monotheism

]]></ac:plain-text-body></ac:structured-macro>

<ac:structured-macro ac:name="unmigrated-wiki-markup" ac:schema-version="1" ac:macro-id="4300c562b4602fde-0b8c009c-4154408c-8555b54e-4f84c1123b975b921e3798b0"><ac:plain-text-body><![CDATA[

[[Bloch 2001

AA. References#Bloch 01]]

Item 1. Enforce the singleton property with a private constructor

]]></ac:plain-text-body></ac:structured-macro>

<ac:structured-macro ac:name="unmigrated-wiki-markup" ac:schema-version="1" ac:macro-id="926482ebc2889205-64676dd0-4ab544f6-b4bfb034-038fa6752308c62b23bc4977"><ac:plain-text-body><![CDATA[

[[Greanier 2000

AA. References#Greanier 00]]

[Discover the Secrets of the Java Serialization API

http://java.sun.com/developer/technicalArticles/Programming/serialization/]

]]></ac:plain-text-body></ac:structured-macro>

<ac:structured-macro ac:name="unmigrated-wiki-markup" ac:schema-version="1" ac:macro-id="2e50266ba083a600-2477f30c-48dc40ec-a0e4b7ed-da0b1c48c40eb31e4333eddf"><ac:plain-text-body><![CDATA[

[[Harold 1999

AA. References#Harold 99]]

 

]]></ac:plain-text-body></ac:structured-macro>

<ac:structured-macro ac:name="unmigrated-wiki-markup" ac:schema-version="1" ac:macro-id="a891cc9790c510e3-cf3dcb26-4ff8449d-ad518724-dfa2ae60a4ed309dc590896e"><ac:plain-text-body><![CDATA[

[[JLS 2005

AA. References#JLS 05]]

[Transient Modifier

http://java.sun.com/docs/books/jls/third_edition/html/classes.html#37020]

]]></ac:plain-text-body></ac:structured-macro>

<ac:structured-macro ac:name="unmigrated-wiki-markup" ac:schema-version="1" ac:macro-id="0e207ef249d5e808-c609cfc5-4adb47c8-ae7791aa-b095f3dfda09fad08a207dbc"><ac:plain-text-body><![CDATA[

[[Long 2005

AA. References#Long 05]]

Section 2.4, Serialization

]]></ac:plain-text-body></ac:structured-macro>

<ac:structured-macro ac:name="unmigrated-wiki-markup" ac:schema-version="1" ac:macro-id="bfd2eace0c2147cb-d8e6d9ae-4adb415f-9a3f963d-85cfc1e27bf703b1cb04e0d6"><ac:plain-text-body><![CDATA[

[[Sun 2006

AA. References#Sun 06]]

Serialization Specification, A.4, Preventing Serialization of Sensitive Data

]]></ac:plain-text-body></ac:structured-macro>

...