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

相关推荐
寒季6661 分钟前
Flutter 智慧零售服务平台:跨端协同打造全渠道消费生态
大数据·人工智能
六行神算API-天璇3 分钟前
可信AI的落地挑战:谈医疗大模型的可解释性与人机协同设计
大数据·人工智能
Keep_Trying_Go12 分钟前
基于Transformer的目标统计方法(CounTR: Transformer-based Generalised Visual Counting)
人工智能·pytorch·python·深度学习·transformer·多模态·目标统计
yumgpkpm15 分钟前
接入Impala、Hive 的AI平台、开源大模型的国内厂商(星环、Doris、智谱AI、Qwen、DeepSeek、 腾讯混元、百川智能)
人工智能·hive·hadoop·zookeeper·spark·开源·hbase
追风少年ii20 分钟前
脚本测试--R版本 vs python版本的harmony整合效果比较
linux·python·机器学习·空间·单细胞·培训
雪兽软件21 分钟前
大数据的新技术和个人数据管理
大数据
飞飞传输25 分钟前
新型网闸使用场景:安全隔离与高效交换的双重突破
大数据·运维·安全
沧海寄馀生28 分钟前
Apache Hadoop生态组件部署分享-Sqoop
大数据·hadoop·分布式·apache·sqoop
沧海寄馀生32 分钟前
Apache Hadoop生态组件部署分享-Ranger
大数据·hadoop·分布式·apache
谷粒.3 小时前
Cypress vs Playwright vs Selenium:现代Web自动化测试框架深度评测
java·前端·网络·人工智能·python·selenium·测试工具