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;
    }

    @Override
    public 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:用于版本控制,如果类结构发生变化,需要更新版本号。

相关推荐
Dxy12393102163 小时前
python如何通过链接下载保存视频
python·spring·音视频
Terio_my3 小时前
Java bean 数据校验
java·开发语言·python
Elastic 中国社区官方博客4 小时前
Elasticsearch MCP 服务器:与你的 Index 聊天
大数据·服务器·人工智能·elasticsearch·搜索引擎·ai·全文检索
无咎.lsy4 小时前
裸K初级篇 - (一)蜡烛突破信号
python
可触的未来,发芽的智生6 小时前
新奇特:神经网络的集团作战思维,权重共享层的智慧
人工智能·python·神经网络·算法·架构
文火冰糖的硅基工坊6 小时前
[创业之路-653]:社会产品与服务的分类
大数据·数据库·人工智能
jerryinwuhan6 小时前
Python数据挖掘之基础分类模型_支持向量机(SVM)
python·支持向量机·数据挖掘
StarPrayers.6 小时前
基于PyTorch的CIFAR10加载与TensorBoard可视化实践
人工智能·pytorch·python·深度学习·机器学习
深蓝电商API7 小时前
实战破解前端渲染:当 Requests 无法获取数据时(Selenium/Playwright 入门)
前端·python·selenium·playwright
key067 小时前
ISO 27001 信息安全管理体系 (ISMS) 建设与运营
大数据·安全合规