import java.io.Serializable;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.ObjectOutputStream;
import java.io.ObjectInputStream;
class Collar {
private int numCollar;
Collar( int num ) { numCollar = num; }
public int getNumCollar() { return numCollar; }
}
class Dog implements Serializable {
private int numDog;
private transient Collar collar;
Dog( int num, Collar collar ) {
numDog = num;
this.collar = collar;
}
public int getValueCollar() { return this.collar.getNumCollar(); }
public void writeObject( ObjectOutputStream os ) {
try {
os.defaultWriteObject();
os.writeInt( getValueCollar() );
} catch( Exception e ) {
e.printStackTrace();
}
}
public void readObject( ObjectInputStream is ) {
try {
is.defaultReadObject();
this.collar = new Collar( is.readInt() );
} catch( Exception e ) {
e.printStackTrace();
}
}
}
public class Teste {
public static void main( String ... args ) {
Dog dog = new Dog( 20, new Collar( 10 ) );
try {
System.out.println( "collar num..:" + dog.getValueCollar() );
ObjectOutputStream OS = new ObjectOutputStream( new FileOutputStream( "teste.do" ) );
OS.writeObject( dog );
OS.close();
ObjectInputStream IS = new ObjectInputStream( new FileInputStream( "teste.do" ) );
dog = (Dog) IS.readObject();
IS.close();
System.out.println( "collar num..:" + dog.getValueCollar() );
} catch( Exception e ) {
e.printStackTrace();
}
}
}
Por que nesta lina 60 a referencia collar aponta para NullPointerException
System.out.println( “collar num…:” + dog.getValueCollar() );