没有合适的资源?快使用搜索试试~ 我知道了~
Java 问题和分析 Serializing a primitive with ObjectOutStream
需积分: 1 0 下载量 189 浏览量
2023-10-10
10:26:12
上传
评论
收藏 149KB PDF 举报
温馨提示
试读
2页
需要对一个长整型(long)的原始值进行序列化
资源推荐
资源详情
资源评论
Serializing a primitive with ObjectOutStream
问题:需要对一个长整型(long)的原始值进行序列化,并且已经有了以下的代码片段:
Question
以下这些方法,应该如何选择?
A. 这段代码需要使用
oos.writeObject(Long.valueOf(l))
将原始的长整型值进行装箱(boxing)
操作来进行序列化。
B. 为了进行序列化,原始类型必须作为外部Java类的实例变量被包含在内。
C. 序列化应该使用
oos.writeObject(l)
进行实现。
D. 这段代码需要使用
oos.writeLong(l)
来实现序列化。
E. 序列化必须委托给DataOutput类来写入原始类型。
Analysis
Java序列化提供了一种将对象图表示为字节序列的机制。该机制还直接支持原始数据类型,作为对象的一
部分。原始类型的包装类也实现了Serializable接口,因此也可以进行序列化。通常情况下,序列化生成的
字节序列会被写入磁盘进行长期存储,或者通过网络传输。
在大多数情况下,将使用ObjectOutputStream类来创建序列化的字节流。该类提供了选项C中提出的
writeObject方法,该方法可以方便地处理整个对象图的序列化。使用ObjectInputStream类可以透明地
还原序列化的结果。然而,请注意,writeObject方法的参数是一个对象,而不是一个原始类型。
前面的讨论有了选项C的一些信息:如果使用该选项,将会发生自动装箱,并且不会序列化原始值。相反,
将得到一个创建的包装器的序列化表示。在分析考试问题的这一点上,现在可能还为时过早拒绝该选项,
但必须决定是否有其他答案更符合问题的要求,问题明确指出正在序列化一个原始值。
事实证明,ObjectOutputStream实现了java.io.DataOutput接口。该接口为所有原始类型定义了
writeXXX方法。值得一提的是,DataOutput也由java.io.DataOutputStream类实现,但该类虽然可以
处理原始类型和字符串,但不能执行序列化。选项D描述了这种能力,它允许使用oos对象直接序列化原始
类型。从这一点可以确定选项D是正确的。它绝对比选项C更好,现在可以自信地将选项C列为错误的选项。
尽管应该对选项D的正确性感到自信,但仍然应该验证其他选项是否不正确。在考试中,可能会发现另一个
看似正确的选项,这会导致重新审视自己的推理。但是,如果时间紧迫,可能会选择第一个看似正确的答
案。
long l = 5L;
try (ObjectOutputStream oos = new ObjectOutputStream(new
FileOutputStream(filename))) {
}
资源评论
0语1言
- 粉丝: 6
- 资源: 91
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功