java父类序列化_不可序列化父类的可序列化子类

  • Post author:
  • Post category:java


我在android / java中对Location的子类进行序列化遇到了麻烦

位置不可序列化。我有一个名为FALocation的第一个子类,它没有任何实例变量。我已经宣布它可序列化。

然后,我有一个名为Waypoint的第二个类,看起来像这样:

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();

}

}

序列化工作正常。

反序列化会产生跟随翼异常(腿对象包含一个航路点):

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)

…/…



版权声明:本文为weixin_33501343原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。