自定义序列化

package File;

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;
import java.io.IOException;
public class SerializeTest {
	public static void main(String[] args) {
		try (ObjectOutputStream oos = new ObjectOutputStream(
				new FileOutputStream("transient.txt"));
				ObjectInputStream ois = new ObjectInputStream(
						new FileInputStream("transient.txt"))) {
			Person per = new Person("孙悟空", 500);
			oos.writeObject(per);
			Person p = (Person) ois.readObject();
			System.out.println(p.getName());//输出空悟孙
			System.out.println(p.getAge());//输出501
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}
class Person implements Serializable {           //序列化的类必须实现Serializable或Externalizable接口
	private String name;
	private transient int age;//transient表示不进行不序列化

	public Person(String name, int age) {
		this.name = name;
		this.age = age;
	}

	public String getName() {
		return this.name;
	}

	public int getAge() {
		return this.age;
	}

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

	public void setAge(int age) {
		this.age = age;
	}
	
	/*进行自定义序列化,要在序列化的类中添加两个方法,都是private,这里用到了反射*/
	
	private void writeObject(ObjectOutputStream out)throws IOException
	{
		out.writeObject(new StringBuffer(name).reverse());
		out.writeInt(age);
	}
	private void readObject(ObjectInputStream in)throws IOException, ClassNotFoundException
	{
		this.name = ((StringBuffer)in.readObject()).toString();
		this.age = in.readInt()+1;
	}
}

 

转载于:https://www.cnblogs.com/masterlibin/p/4788510.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值