关于android的Serializable问题
public void save(){
String tmpfile = "/mnt/sdcard/1234.txt";
KeyFrameInfo flashMotionInfoCache = new KeyFrameInfo();
try {
File f = new File(tmpfile);
FileOutputStream fos = new FileOutputStream(f);
ObjectOutputStream oos = new ObjectOutputStream(fos);
oos.writeObject(flashMotionInfoCache);
oos.flush();
oos.close();
fos.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public class KeyFrameInfo implements java.io.Serializable
{
private static final long serialVersionUID = 1L;
public int bBlank;
public float aca;
}
在oos.writeObject(flashMotionInfoCache);会抛异常,java.io.NotSerializableException:xxx
何解? android Serializable 异常 java --------------------编程问答-------------------- 1期待结果。
2楼主明白了,共勉一下。 --------------------编程问答-------------------- help!!!! --------------------编程问答-------------------- 和我看到的不一样嘛
发:
ByteArrayOutputStream output = new ByteArrayOutputStream();
try {
new ObjectOutputStream(output).writeObject(flashMotionInfoCache);
return output.toByteArray();
} catch(IOException e) {
return null;
}
收:
new ObjectInputStream(--------------------编程问答--------------------
new ByteArrayInputStream(上面返回的byte[])).readObject();
没明白,兄弟要表达啥意思? --------------------编程问答-------------------- 对象没有序列化 所以不能这样读写 需要实现序列化 (貌似Parcel接口也可以) --------------------编程问答--------------------
内部类不能序列化,两种改法,将内部类改成静态类
public static class KeyFrameInfo implements java.io.Serializable
{
private static final long serialVersionUID = 1L;
public int bBlank;
public float aca;
}
第二种方法就是把KeyFrameInfo单独作为一个类,不要写成内部类 --------------------编程问答-------------------- 不知道楼主做过C#的网络收发类对象的项目没,要收发的类都需要序列化和反序列化
而你问的知识点是这样的:
oos.writeObject(flashMotionInfoCache);
ObjectInputStream 与 ObjectOutputStream 类所读写的对象必须实现了 Serializable 接口。
需要注意的是:对象中的 transient 和 static 类型的成员变量也不会被读取和写入 。
只要让这个类 implements Serializable 即可
就相当于一个“通行证”一样,你这个类具备了这个Serializable,就可以被 ObjectInputStream 与 ObjectOutputStream 类操作了~~~~
个人理解,讲得不好勿喷~~~
补充:移动开发 , Android