2015-04-06 4 views
0
import java.io.*; 
public class Test { 
    public static void main(String[] args) throws IOException { 
    try (ObjectOutputStream output = 
     new ObjectOutputStream(new FileOutputStream("object.dat"));) { 
     output.writeObject(new A()); 
    } 
    } 
} 

class A implements Serializable { 
    B b = new B(); 
} 

class B { 
} 

Зачем возникает javaNotSerializableException в следующем коде? Пожалуйста, постарайтесь быть максимально упрощенными, потому что мои возможности для прокрутки не так хорошо обоснованы, как мне нравится.NotSerializableException: неожиданный

ответ

0

Это происходит потому, что ваш (serializable) экземпляр A имеет ссылку на экземпляр B. Класс B не является сериализуемым. Это означает, что экземпляр A не может быть сериализован , несмотря на то, что объявлен как Serializable.

javadoc для Serializable говорит, что это:

«При обходе графа, объект может встречаться, который не поддерживает интерфейс Serializable В этом случае NotSerializableException будет отброшена и определит класс. несериализуемого объекта ».

Смежные вопросы