首页 > 编程语言 >《Java编程思想第四版》学习笔记31--关于Externalizable

《Java编程思想第四版》学习笔记31--关于Externalizable

时间:2023-09-26 23:02:30浏览次数:28  
标签:Java String Externalizable -- Blip3 System b3 println out

//: Blip3.java
// Reconstructing an externalizable object
import java.io.*;
import java.util.*;
class Blip3 implements Externalizable {
int i;
String s; // No initialization
public Blip3() {
System.out.println("Blip3 Constructor");
// s, i not initialized
}
public Blip3(String x, int a) {
System.out.println("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 {
System.out.println("Blip3.writeExternal");
// You must do this:
out.writeObject(s); out.writeInt(i);
}
public void readExternal(ObjectInput in)
throws IOException, ClassNotFoundException {
System.out.println("Blip3.readExternal");
// You must do this:
s = (String)in.readObject();
i =in.readInt();
}
public static void main(String[] args) {
System.out.println("Constructing objects:");
Blip3 b3 = new Blip3("A String ", 47);
System.out.println(b3.toString());
try {
ObjectOutputStream o =
new ObjectOutputStream(
new FileOutputStream("Blip3.out"));
System.out.println("Saving object:");
o.writeObject(b3);
o.close();
// Now get it back:
ObjectInputStream in =
new ObjectInputStream(
new FileInputStream("Blip3.out"));
System.out.println("Recovering b3:");
b3 = (Blip3)in.readObject();
System.out.println(b3.toString());
} catch(Exception e) {
e.printStackTrace();
}
}
} ///:~

                                                                                                                                                            P.321

亲测,这个例程中“out.writeObject(s); out.writeInt(i);”和“s = (String)in.readObject();i =in.readInt();”的顺序需要一致。否则会有异常抛出。


标签:Java,String,Externalizable,--,Blip3,System,b3,println,out
From: https://blog.51cto.com/u_16183536/7615561

相关文章

  • 知识点:掩码、反掩码、通配符
    掩码在掩码中,1表示精确匹配,0表示随机1、1和0永远不交叉2、1永远在左边,0永远在右边使用环境:配置ip地址、静态路由实例:主机:192.168.1.1255.255.255.0静态路由:IProute-static192.168.1.1255.255.255.0g0/0/020.1.1.1反掩码在反掩码中,1表示随机,0表示精确匹配1、0和1永远不交叉2、......
  • 什么是lock4j
    什么是lock4jLock4j是一个Java应用程序的锁定库,用于实现多线程并发控制。它提供了一种简单而强大的方式来管理并发访问共享资源,以避免数据竞争和死锁等并发问题。Lock4j提供了一些关键的特性,包括:锁定机制:Lock4j提供了多种锁定机制,如互斥锁、读写锁、条件锁等,以满足不同的......
  • 01 - Rust 猜数字游戏
    目录1.猜数字游戏的逻辑2.创建新项目3.猜数字游戏实现3.1获取用户输入并打印a.标准库引入b.println!宏c.可变与不可变变量d.string::new与io::stdin().read_line(&mutinput)3.2生成指定范围内的随机数3.3随机数与猜测数的比较a.字符串转数字b.数字比较大小c.循环......
  • sql server group by 拼接
    selectg.GameItem,g.UserId,b.vipLevel,CAST((  SELECT a.orderId+','FROMG_Game_Ordera  WHERE g.userId=a.userIdand SettleTime>='2023-09-2500:00:00'andSettleTime<='2023-09-2523:59:59'andXmState=0and......
  • 9.26随笔
    1.看到这个操场还是挺感慨的,今年没有去参加田径队的训练,前两年都去了,其实还是有点想的,但是嗯年龄越大好像身体也不行了,加之训练量挺大,花的时间很多,但是好像想了一下,好像就算不花这些时间也没有做到其他的事情。虽然开始是为了奖去,但那个氛围,还是挺让人怀念的。2.今天是比较忙的一......
  • 在excel表格插入标黄的这列数据 实现合并单元格,并统计单元格个数?
    大家好,我是皮皮。一、前言前几天在Python最强王者交流群【哎呦喂 是豆子~】问了一个Python自动化办公的问题,一起来看看吧。下图是他的原始数据和他想得到的目标数据,如下所示:需要在标黄的两行里边进行相关操作。二、实现过程这里【瑜亮老师】给了一个思路,groupby系统.漏洞......
  • MongoDB 解析:灵活文档数据库与 Docker Compose 部署
    MongoDB是一款开源、高性能的NoSQL数据库,以其无模式的文档存储格式(BSON)而著称,广泛应用于众多开源项目,包括但不限于Yapi等。它在大规模数据存储和实时数据处理方面表现出色,因此备受青睐。在本文中,我们将深入探讨MongoDB的特性,并详细阐述如何使用DockerCompose轻松部署Mon......
  • 对期望线性性的理解以及例题:洛谷P3239
    \(E(X+Y)\)中\(X+Y\)到底什么意思?我们不妨设\(X\)对应事件1,他有一个样本空间\(\Omega_{1}\),这个样本空间中的每一个事件对应一个取值同理我们对\(Y\)也搞一个\(\Omega_{2}\)。那么\(X+Y\)指的就是\(X\)和\(Y\)的笛卡尔积两个集合的笛卡尔积指的是从这两个集合分别各取一个元素......
  • # yyds干货盘点 # 在excel表格插入标黄的这列数据 实现合并单元格,并统计单元格个数?
    大家好,我是皮皮。一、前言前几天在Python最强王者交流群【哎呦喂 是豆子~】问了一个Python自动化办公的问题,一起来看看吧。下图是他的原始数据和他想得到的目标数据,如下所示:需要在标黄的两行里边进行相关操作。二、实现过程这里【瑜亮老师】给了一个思路,groupby系统.漏洞数.sum,不......
  • 常用的文本编辑软件
    文本编辑软件是用于创建、编辑和格式化文本文档的工具。以下是一些常用的文本编辑软件:MicrosoftWord:MicrosoftWord是最常见的文本编辑软件之一,广泛用于创建和编辑文档。它提供了丰富的格式化和排版选项,适用于文档处理、报告撰写和简历编辑等任务。GoogleDocs:GoogleDocs是基于......