[Resolvido] Instanciando objeto Scanner dentro do método main

1 resposta
Sleipbr

porque se instanciar um objeto Scanner dentro de um método main

Scanner scanner = new Scanner(System.in);

o eclipse vai gerar uma observação??

e vai corrigir colocando um atributo static dentro da classe, fora do main…

1 Resposta

ViniGodoy

Todo objeto que implementa Closeable ou AutoCloseable deve ser fechado com close(), dentro de um finally. Caso contrário, esse warning pode ser gerado.

Se estiver usando o java 7, utilize o try with resources:

try (Scanner scan = new Scanner(System.in)) { //Código aqui }

Caso contrário, use um bloco finally:

Scanner scan = null; try { scan = new Scanner(System.in); } finally { try { if (scan != null) scan.close(); } catch (Exception e) {} }

Deixar a classe estática é um jeito preguiçoso e sem vergonha de dizer que o objeto nunca sai de escopo, portanto, não precisaria ser fechado.
A maioria dos objetos, entretanto, precisam ser fechados (não sei se é o caso do Scanner com o System.in, nunca testei fechar isso para ver o que acontece).

Criado 10 de agosto de 2012
Ultima resposta 10 de ago. de 2012
Respostas 1
Participantes 2