import java.io.*;
public class SerializeDog {
public static void main(String[] args) throws Exception{
Collar c = new Collar(3);
Dog d = new Dog(c, 5);
System.out.println("before: collar size is " + d.getCollar().getCollarSize());
FileOutputStream fs = new FileOutputStream("testSer.ser"); //FileNotFoundException
ObjectOutputStream os = new ObjectOutputStream(fs); //IOException
os.writeObject(d); //IOException
os.close(); //IOException
FileInputStream fis = new FileInputStream("testSer.ser"); //FileNotFoundException
ObjectInputStream ois = new ObjectInputStream(fis); //IOException
d = (Dog) ois.readObject(); //java.lang.ClassNotFoundException
ois.close(); //IOException
System.out.println("after: collar size is " + d.getCollar().getCollarSize());
}
}
class Dog implements Serializable{
private Collar theCollar;
private int dogSize;
public Dog(Collar collar, int size){
theCollar = collar;
dogSize = size;
}
public Collar getCollar(){
return theCollar;
}
}
class Collar{
private int collarSize;
public Collar(int size){
collarSize = size;
}
public int getCollarSize(){
return collarSize;
}
}
[RESOLVIDO] Serializable
6 Respostas
Olá,
Eu executei o código no Netbeans e a resposta foi essa:
Exception in thread "main" java.io.NotSerializableException: javaapplication1.Collar
before: collar size is 3
at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1156)
at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1509)
at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1474)
at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1392)
at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1150)
at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:326)
at javaapplication1.NewClass3.main(NewClass3.java:22)
Java Result: 1
Deve ter algo de errado ai entao. Gera exceçao.
Super estranho… vou ver aqui, valew
Compila, mas não executa...
C:\Users\Vingdel\Desktop>javac SerializeDog.java
C:\Users\Vingdel\Desktop>java SerializeDog
before: collar size is 3
Exception in thread "main" java.io.NotSerializableException: Collar
at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1156)
at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1509)
at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1474)
at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1392)
at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1150)
at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:326)
at SerializeDog.main(SerializeDog.java:12)
Abraço!
Mesmo 2 anos depois do ultimo comentário, como passei pelo mesmo erro, queria apenas postar uma ideia de solução.
Eu estava tendo o mesmo problema e simplemeste separei as classes em arquivos, de tal forma que as classes não sejam internas à que testa a serialização.
Dog.java uma classe em um arquivo separado.
O mesmo para Collar.class, outra classe em outro arquivo separado.
Com isto meu problema foi solucionado.
Valeu
Mesmo 2 anos depois do ultimo comentário, como passei pelo mesmo erro, queria apenas postar uma ideia de solução.Eu estava tendo o mesmo problema e simplemeste separei as classes em arquivos, de tal forma que as classes não sejam internas à que testa a serialização.
Dog.java uma classe em um arquivo separado.
O mesmo para Collar.class, outra classe em outro arquivo separado.Com isto meu problema foi solucionado.
Valeu
Bela ressuscitada de tópico… rsrsrs
Quanto a erro isso acontece por que ao serializar o estado de um objeto este processo obrigada as classes a serem serializada a implementar a interface java.io.Serializable,
independente das classes esta ou não no mesmo arquivo.