Serializable的优化接口 Externalizable(长时间保存对象方法二)

public interface Externalizable extends java.io.Serializable

Externalizable:主要能调用需保存对象类的构造函数

   一、增加两方法

         1、writeExternal :writeObject 之前调用。

               必须存入需保存对象类的类变量。

         2、readExternal:       

               1>readObject 调用之前执行 需保存对象类的构造函数。 

               2>执行readExternal方法。

              3>读出 需保存对象类的类变量。

  二、源码

package io;

import java.io.*;
import static net.mindview.util.Print.*;

public class Blip3 implements Externalizable {
private int i;
private String s; // No initialization

public Blip3() {
print("Blip3 Constructor");
// s, i not initialized
}

public Blip3(String x, int a) {
print("Blip3(String x, int a)");
s = x;
i = a;
// s & i initialized only in non-default constructor.
}
public String toString() {
return s + i;
}
public void writeExternal(ObjectOutput out) throws IOException {
print("Blip3.writeExternal");
// You must do this:
out.writeObject(s);
out.writeInt(i);
}
public void readExternal(ObjectInput in) throws IOException,
ClassNotFoundException {
print("Blip3.readExternal");
// You must do this:
s = (String) in.readObject();
i = in.readInt();
}

public static void main(String[] args) throws IOException,
ClassNotFoundException {
print("Constructing objects:");
Blip3 b3 = new Blip3("A String ", 47);
print(b3);
ObjectOutputStream o = new ObjectOutputStream(new FileOutputStream("Blip3.out"));
print("Saving object:");
o.writeObject(b3);
o.close();
// Now get it back:
ObjectInputStream in = new ObjectInputStream(new FileInputStream("Blip3.out"));
print("Recovering b3:");
b3 = (Blip3) in.readObject();
print(b3);
}
}

              writeObject 之前调用。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值