java - java中的异常: write in a output file

标签 java exception treeset

什么是:

java.io.NotSerializableException: java.util.TreeMap$KeyIterator
at java.io.ObjectOutputStream.writeObject0(Unknown Source)
at java.io.ObjectOutputStream.defaultWriteFields(Unknown Source)
at java.io.ObjectOutputStream.writeSerialData(Unknown Source)
at java.io.ObjectOutputStream.writeOrdinaryObject(Unknown Source)
at java.io.ObjectOutputStream.writeObject0(Unknown Source)
at java.io.ObjectOutputStream.writeObject(Unknown Source) ???

我尝试在输出文件中写入具有类似属性的类的对象

private static final long serialVersionUID = 1L;
private TreeSet<Product> tree = new TreeSet<Product>();
private Iterator<Product> iterator ;

并且此类实现了Serialized

public void scrieArbore() {
    try {
        ObjectOutputStream outStreamWarehouse = new ObjectOutputStream(new FileOutputStream(new File(WAREHOUSE_FILENAME)));
        outStreamWarehouse.writeObject(h);

        outStreamWarehouse.flush();

        outStreamWarehouse.close();

        System.out.println("Safely written warehouse");

    } catch (IOException e) {
        e.printStackTrace();
    }
}

最佳答案

问题是Iterator<Product> iterator field 。 Iterator 没有实现Serializable .

解决此问题的一种方法是将此字段标记为 transient .

private transient Iterator<Product> iterator;

关于java - java中的异常: write in a output file,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22920943/

相关文章:

java - 如何转换有时将转换后的值添加到 Java 8 流/lambda 的循环?

java - ANT:如何将 "add"路径元素从一条路径转换为第二条路径?

java - 处理 try catch block 内的 MalformedURLException 异常

Java代码没有输出预期的结果

Java - 尝试计算来自 Getter 的值的平均值

java - 为什么减去这两次(在 1927 年)会产生奇怪的结果?

java - java中处理异常的可管理方法

swift - 如何处理未捕获的异常

java - 比较器和等于()

java - 使不同的 TreeSet 保持与另一个 TreeSet 相同的顺序