Serializable 和Parcelable 的区别?
Serializable:
序列化:就是把对象转化成字节。
反序列化:把字节数据转换成对象。
Java IO 包中为我们提供了 ObjectInputStream 和 ObjectOutputStream 两个类。
java.io.ObjectOutputStream 类实现类的序列化功能。
java.io.ObjectInputStream 类实现了反序列化功能。
序列化的实现方法:实现序列化接口就能实现序列化
什么时候使用序列化:是否需要远程传输?
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;
public class TestSerializable{
public static void main(String[] args) {
Person person = new Person("wdd",28);
FileOutputStream fOutputStream;
ObjectOutputStream so;
try {
//实现类的序列化功能
fOutputStream = new FileOutputStream("data.txt");
so = new ObjectOutputStream(fOutputStream);
so.writeObject(person);
so.close();
//实现类的反序列功能
FileInputStream fileInputStream = new FileInputStream("data.txt");
ObjectInputStream objectInputStream = new ObjectInputStream(fileInputStream);
Person person2 = (Person) objectInputStream.readObject();
System.out.println(person2.toString());
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}catch (Exception e) {
// TODO: handle exception
}
}
}
class Person implements Serializable{
private String name;
private int age;
public Person(String name,int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return "Person [name=" + name + ", age=" + age + "]";
}
}