Note that there are some explanatory texts on larger screens.

plurals
  1. POSerializable subclass of non-serializable parent class
    primarykey
    data
    text
    <p>I am hitting a brickwall with serialization of a subclass of Location in android/java</p> <p>Location is not serializable. I have a first subclass called FALocation that does not have any instance variables. I have declared it serializable.</p> <p>Then I have a second class called Waypoint that looks like this:</p> <pre><code>public class Waypoint extends FALocation implements Serializable { /** * */ private static final long serialVersionUID = 1L; /* Class variables *******************************************************/ private static int CLASS_VERSION=1; //Used to version parcels /* Instance variables ****************************************************/ private transient String type=DataHelper.PT_TYPE_US; private transient String country; private transient String name=null; private transient String description=null; private transient int elevation = 0; private transient int population = 0; // Afterthought, added to match the DB structure /* Constructors **********************************************************/ public Waypoint() { super(); } public Waypoint(double lat, double lon, String name, String description) { super(lat, lon); this.setName(name); this.setDescription(description); } public Waypoint(Location l) { super(l); } public Waypoint(String provider) { super(provider); } /* Implementing serializable */ private void writeObject(java.io.ObjectOutputStream out) throws IOException { Log.v("DroidFA", "Serialising \"%s\" (v%d).", Waypoint.class.getSimpleName(), CLASS_VERSION); out.writeInt(CLASS_VERSION); out.writeObject(type); out.writeObject(country); out.writeObject(name); out.writeObject(description); out.writeInt(elevation); out.writeInt(population); } private void readObject(java.io.ObjectInputStream in) throws IOException, ClassNotFoundException { int serialClassVersion = in.readInt(); Log.v("DroidFA", "Deserialising \"%s\" (v%d).", Waypoint.class.getSimpleName(),serialClassVersion); type = (String) in.readObject(); country = (String) in.readObject(); name = (String) in.readObject(); description = (String) in.readObject(); elevation = in.readInt(); population = in.readInt(); } } </code></pre> <p>Serialization works fine.</p> <p>Deseriamization produces the followwing exception (the leg object contains a waypoint).:</p> <pre><code>10-05 13:50:35.259: WARN/System.err(7867): java.io.InvalidClassException: android.location.Location; IllegalAccessException 10-05 13:50:35.267: WARN/System.err(7867): at java.io.ObjectInputStream.resolveConstructorClass(ObjectInputStream.java:2010) 10-05 13:50:35.267: WARN/System.err(7867): at java.io.ObjectInputStream.readNewObject(ObjectInputStream.java:2095) 10-05 13:50:35.267: WARN/System.err(7867): at java.io.ObjectInputStream.readNonPrimitiveContent(ObjectInputStream.java:929) 10-05 13:50:35.267: WARN/System.err(7867): at java.io.ObjectInputStream.readObject(ObjectInputStream.java:2285) 10-05 13:50:35.278: WARN/System.err(7867): at java.io.ObjectInputStream.readObject(ObjectInputStream.java:2240) 10-05 13:50:35.278: WARN/System.err(7867): at com.droidfa.navigation.Leg.readObject(Leg.java:262) .../... </code></pre>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload