Android中的两种序列化方式

1.Serializable,官方文档给出这种说明
类通过实现 java.io.Serializable 接口以启用其序列化功能。未实现此接口的类将无法使其任何状态序列化或反序列化。可序列化类的所有子类型本身都是可序列化的。序列化接口没有方法或字段,仅用于标识可序列化的语义。

实现这种序列化比较简单,直接实现Serializable接口就行,看代码

/**
 * 
 */
package com.fangzhiyeu.dev;

import java.io.Serializable;

import javax.lang.model.element.Parameterizable;

/**
 * @author fang
 *
 */
public class Demo1 implements Serializable{

   String name;
   int size;
public String getName() {
    return name;
}
public void setName(String name) {
    this.name = name;
}
public int getSize() {
    return size;
}
public void setSize(int size) {
    this.size = size;
}

}

让JavaBean直接实现Serializable的接口就行

2.Parcelable序列化,实现Parcelable序列化较为麻烦
2.1首先需要实现:writeToParcel和readFromPacel方法

2.2接着需要在:该类中添加一个名为CREATOR的static final属性
改属性需要实现:android.os.Parcelable.Creator接口

2.3再接着需要从写接口中的两个方法:
createFromParcel(Parcel source)方法:实现从source创建出JavaBean实例的功能
,这种序列化使用AS非常简单,

package com.example.myapplication;

import android.os.Parcel;
import android.os.Parcelable;

/**
 * Created by fang on 2017/11/12.
 */

public class Demo implements Parcelable {

    String name;
    int Size;

    protected Demo(Parcel in) {
       name= in.readString();
        Size=in.readInt();
    }
    public static final Creator<Demo> CREATOR = new Creator<Demo>() {
        @Override
        public Demo createFromParcel(Parcel in) {
            return new Demo(in);
        }
        @Override
        public Demo[] newArray(int size) {
            return new Demo[size];
        }
    };
    @Override
    public int describeContents() {
        return 0;//默认返回O
    }
    @Override
    public void writeToParcel(Parcel dest, int flags) {
     dest.writeInt(Size);
        dest.writeString(name);
    }

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值