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…
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…
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).