}
public void salvarArquivo() {
if (instance == null) {
return;
}
File out = new File(“contas.txt”);
FileOutputStream fos = null;
ObjectOutputStream oos = null;
try {
fos = new FileOutputStream(out);
oos = new ObjectOutputStream(fos);
oos.writeObject(instance);
} catch (Exception e) {
e.printStackTrace();
}
}
}
eu tenho uma dúvida a respeito do metodo getInstance(), se instance == null como vou ler algo que é null? sinceramente não consegui entender a logica dessa parte em específico
public void salvarArquivo(){
if (instance == null){
return;
}
File out = new File(“contas.txt”);
FileOutputStream fos = null;
ObjectOutputStream oos = null;
try{
fos = new FileOutputStream(out);
oos = new ObjectOutputStream(fos);
oos.writeObject(instance);
}catch(Exception e){
e.printStackTrace();
}
}
Se instance == null, então o método salvarArquivo é finalizado (já que o return termina a execução qualquer método). Caso instance não seja igual a null, então o restante do bloco será executado.
seria porque no bloco catch do metodo lerDoArquivo ele instancia um objeto de repositorioContas? daí a instancia precisa ser == null,por conta do padrão singleton?
Achei que tivesse sido bem explícito. Mas vou melhorar a explicação:
Quando instancenão for igual a null (instance != null), então executa:
File out = new File(“contas.txt”);
FileOutputStream fos = null;
ObjectOutputStream oos = null;
try{
fos = new FileOutputStream(out);
oos = new ObjectOutputStream(fos);
oos.writeObject(instance);
}catch(Exception e){
e.printStackTrace();
}
Daí as classes FileOutputStream, ObjectOutputStream e o método writeObject (da classe ObjectOutputStream) fazem o seu trabalho. Se ocorrer algum erro, uma exceção é lançada.
Caso seja igual a null (instance == null) o método é simplesmente finalizado (return é só usado para interromper a execução do método, já que a função é void, ou seja, não tem retorno). Isso significa que o controle do programa é devolvido ao objeto chamador (quem invocou o método salvarArquivo()) e a execução do programa continua normalmente.
Quanto ao método getInstance():
Há simplesmente uma verificação. Se nenhuma instancia foi criada, ou seja, instance == null, então a variável instance recebe dados retornados pelo método lerDoArquivo(), isto é, a variável instance é inicializada. Por fim, o método retorna a variável instance que é do tipo RepositorioContas.
Para mais detalhes sobre essas classes, por favor, consulte a documentação (Docs Oracle - Java SE 10).