关于android的Serializable问题

Oo_Oo_ 2013-08-31 06:45:07
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
何解?
...全文
329 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
凉凉二点凉 2013-09-12
  • 打赏
  • 举报
回复
引用 5 楼 tanwei4199 的回复:
对象没有序列化 所以不能这样读写 需要实现序列化 (貌似Parcel接口也可以)
引用 2 楼 Oo_Oo_ 的回复:
help!!!!
内部类不能序列化,两种改法,将内部类改成静态类
	public static  class KeyFrameInfo implements java.io.Serializable
	{
	    private static final long serialVersionUID = 1L;
	    public int bBlank;
	    public float aca;
	}
第二种方法就是把KeyFrameInfo单独作为一个类,不要写成内部类
胖虎 2013-09-12
  • 打赏
  • 举报
回复
不知道楼主做过C#的网络收发类对象的项目没,要收发的类都需要序列化和反序列化 而你问的知识点是这样的: oos.writeObject(flashMotionInfoCache); ObjectInputStream 与 ObjectOutputStream 类所读写的对象必须实现了 Serializable 接口。 需要注意的是:对象中的 transient 和 static 类型的成员变量也不会被读取和写入 。 只要让这个类 implements Serializable 即可 就相当于一个“通行证”一样,你这个类具备了这个Serializable,就可以被 ObjectInputStream 与 ObjectOutputStream 类操作了~~~~ 个人理解,讲得不好勿喷~~~
荒颜 2013-09-11
  • 打赏
  • 举报
回复
对象没有序列化 所以不能这样读写 需要实现序列化 (貌似Parcel接口也可以)
Oo_Oo_ 2013-09-11
  • 打赏
  • 举报
回复
引用 3 楼 guoyoulei520 的回复:
和我看到的不一样嘛 发:
 ByteArrayOutputStream output = new ByteArrayOutputStream();
        try {
          new ObjectOutputStream(output).writeObject(flashMotionInfoCache);
          return output.toByteArray();
        } catch(IOException e) {
          return null;
        }
收:
new ObjectInputStream(
						new ByteArrayInputStream(上面返回的byte[])).readObject();
没明白,兄弟要表达啥意思?
凉凉二点凉 2013-09-02
  • 打赏
  • 举报
回复
和我看到的不一样嘛 发:
 ByteArrayOutputStream output = new ByteArrayOutputStream();
        try {
          new ObjectOutputStream(output).writeObject(flashMotionInfoCache);
          return output.toByteArray();
        } catch(IOException e) {
          return null;
        }
收:
new ObjectInputStream(
						new ByteArrayInputStream(上面返回的byte[])).readObject();
Oo_Oo_ 2013-09-02
  • 打赏
  • 举报
回复
help!!!!
猪头贝勒 2013-09-01
  • 打赏
  • 举报
回复
1期待结果。 2楼主明白了,共勉一下。

80,471

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧