当前位置: 首页 > java >正文

hadoop中的序列化和反序列化(3)

3. Java的序列化

Java提供了内置的序列化机制,通过java.io.Serializable接口实现。

3.1 如何实现Java序列化
  • 让类实现Serializable接口。

  • 使用ObjectOutputStream进行序列化。

  • 使用ObjectInputStream进行反序列化。

示例代码
序列化

java

复制

import java.io.FileOutputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;class Person implements Serializable {private static final long serialVersionUID = 1L; // 版本号private String name;private int age;public Person(String name, int age) {this.name = name;this.age = age;}@Overridepublic String toString() {return "Person{name='" + name + "', age=" + age + "}";}
}public class SerializationExample {public static void main(String[] args) {Person person = new Person("John", 30);try (ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("person.ser"))) {oos.writeObject(person);System.out.println("Object serialized successfully.");} catch (Exception e) {e.printStackTrace();}}
}
反序列化

java

复制

import java.io.FileInputStream;
import java.io.ObjectInputStream;public class DeserializationExample {public static void main(String[] args) {try (ObjectInputStream ois = new ObjectInputStream(new FileInputStream("person.ser"))) {Person person = (Person) ois.readObject();System.out.println("Object deserialized: " + person);} catch (Exception e) {e.printStackTrace();}}
}
3.2 注意事项
  • Serializable接口是一个标记接口,没有方法。

  • 序列化时会保存对象的字段值,但不会保存方法。

  • 如果类中包含非序列化字段,可以使用transient关键字标记。

  • 序列化版本号serialVersionUID:用于版本控制,如果类结构发生变化,需要更新版本号。

http://www.xdnf.cn/news/4528.html

相关文章:

  • React学习路线-Deepseek版
  • 搭建spark伪分布集群
  • windows10 环境下通过huggingface_hub下载huggingface社区模型
  • 子集树算法文档
  • 驱动开发硬核特训 · 专题篇:Vivante GPU 与 DRM 图形显示体系全解析(i.MX8MP 平台实战)
  • 机器学习在信用卡欺诈检测中的应用思考
  • 4.9/Q1,GBD数据库最新文章解读
  • Admyral - 可扩展的GRC工程自动化平台
  • 【MCP】function call与mcp若干问题整理
  • 汽车加气站操作工考试知识点总结
  • 云渲染农场:让复杂渲染变得简单高效
  • OpenCV计算机视觉实战(3)——计算机图像处理基础
  • OpenCV 中用于背景分割的一个类cv::bgsegm::BackgroundSubtractorGMG
  • DeepSeek智能时空数据分析(八):NL2SQL绘制河流-轨迹缓冲区如何生成
  • 如何在自己的服务器上部署静态网页并通过IP地址进行访问
  • 使用 Celery + Redis + Eventlet 实现 Python 异步编程(Windows 环境)
  • STM32--TIM--函数
  • 卢dns免费二级域名分发
  • 【Python os模块完全指南】从基础到高效文件操作
  • 智算中心基础设施0-1建设全流程及投产后的运维
  • 物业设备管理的“多系统协同”模式:ERP、IoT与工单系统如何联动?
  • 202505扫描主机:升级Tomcat解决Tomcat 安全漏洞(CVE-2025-24813)【为了同一个tomcat版本安装多个服务】
  • 什么是Blender?怎么获取下载Blender格式文件模型
  • Pinecone向量库 VS Redis
  • DeepSeek的100个应用场景
  • 什么是TCC?什么是二阶段提交?三阶段提交?
  • 格雷狼优化算法`GWO 通过模拟和优化一个信号处理问题来最大化特定频率下的功率
  • Java消息队列性能优化实践:从理论到实战
  • 快速get sizeof和strlen的区别 !
  • 做 iOS 调试时,我尝试了 5 款抓包工具