Java 为什么我会收到NotSerializableException?

Java 为什么我会收到NotSerializableException?,java,objectoutputstream,notserializableexception,Java,Objectoutputstream,Notserializableexception,我有一个实现Serializable的类,但我很难找到为什么每当我试图将其写入磁盘时它都会抛出此异常。我正在写ValueConatiner.class public class ValueContainer implements Serializable { private static final long serialVersionUID = 2846820178517499793L; public String name; public MonetaryField

我有一个实现Serializable的类,但我很难找到为什么每当我试图将其写入磁盘时它都会抛出此异常。我正在写ValueConatiner.class

public class ValueContainer implements Serializable {
    private static final long serialVersionUID = 2846820178517499793L;
    public String name;
    public MonetaryField buy;
    public MonetaryField sell;
    public MonetaryField revenue;
    public MonetaryField cost;
    public MonetaryField listing_fee;
    public MonetaryField sale_fee;
    public MonetaryField profit;
    public int quantity;
    public int investment;
    public int period;

    public ValueContainer(String n, MonetaryField b, MonetaryField s,
                          MonetaryField r, MonetaryField c, MonetaryField lf,
                          MonetaryField sf, MonetaryField p, int q,
                          int i, int per) {
            name = n;
            buy = b;
            sell = s;
            revenue = r;
            cost = c;
            listing_fee = lf;
            sale_fee = sf;
            profit = p;
            quantity = q;
            investment = i;
            try {
                    period = per;
            } catch(NumberFormatException e) {
                    System.out.println("No data. Enter a number.");
            }
    }
}
我试图在一个单独的类中使用这个方法将它写入磁盘,我在这个类中保存了我的JMenuBar

private void saveFile() {
    if(!currentFile.exists()) {
        loadFile();
    }
    if(currentFile.exists()) {
        try {
            ValueContainer values = getValues();
            FileOutputStream f_out = new FileOutputStream(currentFile);
            ObjectOutputStream obj_out = new ObjectOutputStream(f_out);
            try {
                obj_out.writeObject(values);
            } finally {
                obj_out.close();
                f_out.close();
            }
            System.out.println("Saved!");
        } catch(IOException e) {
            System.out.println(e);
        }
    }
}

我只是想在黑暗中拍一张照片,然后说


MonetaryField
也需要序列化。

我只是想在黑暗中试一试,然后说


MonetaryField
也需要可序列化。

类如果实现了
Serializable
,并且其所有非基本字段都是
Serializable
,则该类是可序列化的。如果类实现了
serializable
,并且其所有非原语字段都是
serializable
,则该类可能是可序列化的。可能
MonetaryField
不可
序列化

…在遍历图形时 可能遇到不支持序列化的对象 接口。在这种情况下,将抛出NotSerializableException 并将标识不可序列化对象的类

这是来自javadocs的。要使实例可序列化,对象图中的所有对象也必须可序列化。仔细检查是否是这种情况

…在遍历图形时 可能遇到不支持序列化的对象 接口。在这种情况下,将抛出NotSerializableException 并将标识不可序列化对象的类


这是来自javadocs的。要使实例可序列化,对象图中的所有对象也必须可序列化。仔细检查情况是否如此。

是否可以放置堆栈跟踪?MonetaryField是否可序列化?实际上,MonetaryField未序列化,但即使更改后仍会引发异常。当使用e.getMessage()时,它表示javax.swing.GroupLayout.Then
MonetaryField
实际上不可序列化。请参见下面。您可以放置堆栈跟踪吗?MonetaryField可序列化吗?实际上,MonetaryField未序列化,但即使更改后仍会引发异常。当使用e.getMessage()时,它表示javax.swing.GroupLayout.Then
MonetaryField
实际上不可序列化。见下文。