Olá pessoal,
vendo um exemplo referente a Serializable , não entendi por que dá erro na linha
os.writeInt(theCollar.getCollarSize());
pois esse atributo é transient e não poderia gravar mas o comando
os.defaultWriteObject(); não iria tratar essa situação ???
Essa é minha duvida ???
se alguém puder me ajudar…
abs
class Collar implements Serializable{
private int collarSize;
public Collar(int size) {
collarSize = size;
}
public int getCollarSize() {
return collarSize;
}
}
public class Dog implements Serializable{
private static transient Collar theCollar;
private static int dogSize;
public Dog(Collar collar, int size) {
theCollar = collar;
dogSize = size;
}
public Collar getCollar() {
return theCollar;
}
public static void main (String[] args){
Collar c = new Collar(3);
Dog d = new Dog(c, 8);
System.out.println("before: collar size is "
+ d.getCollar().getCollarSize());
try {
FileOutputStream fs = new FileOutputStream("testSer.ser");
ObjectOutputStream os = new ObjectOutputStream(fs);
os.defaultWriteObject();
os.writeInt(theCollar.getCollarSize());
os.close();
} catch (Exception e) {
e.printStackTrace();
}
//
try {
FileInputStream fis = new FileInputStream("testSer.ser");
ObjectInputStream ois = new ObjectInputStream(fis);
d = (Dog) ois.readObject();
ois.close();
} catch (Exception e) { e.printStackTrace(); }
// System.out.println("after: collar size is "
// + d.getCollar() .getCollarSize());
System.out.println("dogSize="+d.dogSize);
}
}
erro:
before: collar size is 3
dogSize=8
java.io.NotActiveException: not in call to writeObject
at java.io.ObjectOutputStream.defaultWriteObject(Unknown Source)
at certificacao.licão_8_7.Dog.main(Dog.java:46)
java.io.EOFException
at java.io.ObjectInputStream$BlockDataInputStream.peekByte(Unknown Source)
at java.io.ObjectInputStream.readObject0(Unknown Source)
at java.io.ObjectInputStream.readObject(Unknown Source)
at certificacao.licão_8_7.Dog.main(Dog.java:56)