首页 > 解决方案 > Java:无法使用 DateTimeFormatter 属性序列化对象?

问题描述

我正在尝试将对象 ( Match) 的序列化写入文件。但是,当我运行我的代码时,我收到以下代码,说明该对象无法序列化,因为它包含一个DateTimeFormatter不可序列化的属性:

java.io.NotSerializableException: java.time.format.DateTimeFormatter

问题是我无法修改DateTimeFormatter要实现的类java.io.Seralizable,因为该接口已标记final

有关如何解决此问题的任何建议?

下面是我的代码:

匹配.java

import java.time.format.DateTimeFormatter;
import java.util.Locale;

public class Match implements java.io.Serializable {
    private String timeFormat = "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'";
    private final DateTimeFormatter inputFormatter = DateTimeFormatter.ofPattern(timeFormat, Locale.ENGLISH);

    public Match() {
    }
}

SaveSerializedMatch.java

import java.io.FileOutputStream;
import java.io.ObjectOutputStream;
import java.io.IOException;

public class SaveSerializedMatch{
    public static void main(String[] args) {
        Match match = new Match();
        
        try {
            FileOutputStream fileOut = new FileOutputStream("Match.txt");
            ObjectOutputStream out = new ObjectOutputStream(fileOut);
    
            out.writeObject(match);
            out.close();
    
            fileOut.close();
        }
        catch (IOException ex) {
            System.out.println(ex.toString());
        }
    }
}

标签: javaoopserializationio

解决方案


推荐阅读