1
resposta

[Dúvida] Quando há a obrigação de inicializar um objeto antes de usá-lo?

No exemplo da aula 4, antes de extrair da condição do método main o que se tornará o método importarPetsDoAbrigo(), não se fazia necessário inicializar a variável reader. Por que depois da refatoração, ao mever a lógica para um método próprio, o compilador reclamou?

1 resposta

Olá, Pamela. Tudo bem?

Quando você move o código que estava no main para um método separado, como importarPetsDoAbrigo(), o escopo das variáveis muda. No main, a variável reader estava sendo usada diretamente dentro de um bloco try-catch, o que significa que ela era inicializada e usada dentro do mesmo escopo.

Ao mover essa lógica para um método separado, é necessário garantir que a variável reader seja inicializada antes de ser utilizada, porque agora ela é declarada fora do bloco try-catch. Inicializar a variável como null antes do bloco try é uma prática comum para garantir que ela esteja disponível em todo o escopo do método e possa ser usada após o bloco try-catch.

Aqui está um exemplo simplificado para ilustrar:

BufferedReader reader = null;
try {
    reader = new BufferedReader(new FileReader(nomeArquivo));
    // Lógica de leitura do arquivo
} catch (IOException e) {
    System.out.println("Erro ao carregar o arquivo: " + nomeArquivo);
}
// Aqui, o 'reader' ainda está acessível, mesmo após o bloco try-catch

Essa inicialização fora do bloco try-catch permite que você use o reader em outras partes do método, como no loop while que lê as linhas do arquivo. Se não fosse inicializado antes do bloco try-catch, o compilador reclamaria, pois poderia haver um caminho de execução onde reader não seria inicializado, mas ainda assim seria utilizado.

Espero ter ajudado e bons estudos.

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.Bons Estudos!