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

相关推荐
一眼万里*e17 分钟前
搭建个人知识库
python
Lansonli27 分钟前
大数据Spark(七十三):Transformation转换算子glom和foldByKey使用案例
大数据·分布式·spark
中电金信30 分钟前
2025新加坡金融科技节:看AI驱动的金融转型策略与“中国方案”
大数据·人工智能·金融
程序员小远1 小时前
软件测试之bug分析定位技巧
自动化测试·软件测试·python·测试工具·职场和发展·测试用例·bug
江上清风山间明月1 小时前
Android 系统中进程和线程的区别
android·python·线程·进程
mit6.8241 小时前
[LivePortrait] docs | Gradio用户界面
python
听风吟丶2 小时前
Java 函数式编程深度实战:从 Lambda 到 Stream API 的工程化落地
开发语言·python
饮长安千年月3 小时前
玄机-第八章 内存马分析-java03-fastjson
开发语言·python·安全·web安全·网络安全·应急响应
天天爱吃肉82183 小时前
新能源汽车动力系统在环(HIL)半实物仿真测试台架深度解析
人工智能·python·嵌入式硬件·汽车
卡次卡次14 小时前
注意点:挂载与插硬盘,容器挂载实现持久化存储
python