Arquivos Binários

import java.io.;
import javax.swing.
;

class Empregado {
String nome;
String cargo;
int matricula;
double salario;
Endereco end_res;
}
class Endereco {
String rua;
int numero;
String cidade;
String estado;
}

public class Emp {
static String arquivo=“cadastros.dat”;
public static void main(String args[]) {
try {
RandomAccessFile cadastro = null; //declaração
cadastro = new RandomAccessFile(new File(arquivo), “rw”);
Empregado emp = new Empregado();
emp.matricula=Integer.parseInt(JOptionPane.showInputDialog(“Matrícula”));
emp.nome=JOptionPane.showInputDialog(“Nome”);
emp.cargo=JOptionPane.showInputDialog(“Cargo”);
emp.salario=Double.parseDouble(JOptionPane.showInputDialog(“Salário”));
emp.end_res.rua=JOptionPane.showInputDialog(“Rua”);
emp.end_res.numero=Integer.parseInt(JOptionPane.showInputDialog(“Número”));
emp.end_res.cidade=JOptionPane.showInputDialog(“Cidade”);
emp.end_res.estado=JOptionPane.showInputDialog(“Estado”);

       cadastro.seek(cadastro.length()); 
       
       cadastro.writeInt(emp.matricula);
       cadastro.writeUTF(emp.nome);
       cadastro.writeUTF(emp.cargo);
       cadastro.writeDouble(emp.salario);
       cadastro.writeUTF(emp.end_res.rua);
       cadastro.writeInt(emp.end_res.numero);
       cadastro.writeUTF(emp.end_res.cidade);
       cadastro.writeUTF(emp.end_res.estado);
       
       
       cadastro.close();
   } catch (IOException e) {
       JOptionPane.showMessageDialog(null,"não possível abrir o arquivo");
   }

}
}

quando eu vou rodar, ele pede as informações certinhas até o “emp.end_res.rua=JOptionPane.showInputDialog(“Rua”);”, nessa se eu botar algo, ele vai dar o erro:

Exception in thread “main” java.lang.NullPointerException
at Emp.main(Emp.java:29)
Java Result: 1

o que fazer ?
obrigado.

opa, descpbri o que tava errado, eh que esqueci de chamar o endereco end_res = new endereco(); na classe empregado.