Serializable接口的实现

 一:序列化,就是把对象转化为字节码文件(因为字节码才能跨平台传输),才能进行网络传输。 
把该字节序列保存起来(例如:保存在一个文件里),以后可以随时将该字节序列恢复为原来的对象。甚至可以将该字节序列放到其他计算机上或者通过网络传输到其他计算机上恢复,只要该计算机平台存在相应的类就可以正常恢复为原来的对象。  
 

 序列化:ObjectOutputStream代表对象输出流,它的writeObject(Object obj)方法可对参数指定的obj对象进行序列化,把得到的字节序列写到一个目标输出流中。

  反序化:ObjectInputStream代表对象输入流,它的readObject()方法从一个源输入流中读取字节序列,再把它们反序列化为一个对象,并将其返回。

 

二:Parcelable和Serializable的区别:

内存间数据传输时推荐使用Parcelable,如activity间传输数据

保存到本地或者网络传输时推荐使用Serializable

最简单的demo:

Fruit类:

public class Fruit implements Serializable {
    private String name;
    private String id;
    private String cost;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getCost() {

        return cost;
    }

    public void setCost(String cost) {
        this.cost = cost;
    }
}
MainActivity:

setContentView(R.layout.activity_main);
Fruit a = new Fruit();
a.setCost("20");
a.setId("123");
a.setName("banana");
Intent intent = new Intent(this,Main2Activity.class);//(注意在manifest中声明Main2Activity)
intent.putExtra("Fruit",a);
startActivity(intent);
Main2Activity:

setContentView(R.layout.activity_main2);
Fruit p = (Fruit)getIntent().getSerializableExtra("Fruit");       
System.out.println("aaaaa  "+p.getName());
System.out.println("bbbbb  "+p.getCost());
System.out.println("ccccc  "+p.getId());
运行结果:

12-01 13:06:23.555 2659-2659/example.com.test_for_serializable I/System.out: aaaaabanana
12-01 13:06:23.555 2659-2659/example.com.test_for_serializable I/System.out: bbbbb20
12-01 13:06:23.555 2659-2659/example.com.test_for_serializable I/System.out: ccccc123
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值