Boa tarde. Você passa sempre o Scanner como parâmetro nos métodos. Não poderiar instanciar o Scanner dentro do método ao invés de passar como parâmetro?
Obrigado
Att. Marcos
Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!
Boa tarde. Você passa sempre o Scanner como parâmetro nos métodos. Não poderiar instanciar o Scanner dentro do método ao invés de passar como parâmetro?
Obrigado
Att. Marcos
Olá Marcos, tudo bem com você?
Você até pode instanciar o Scanner toda vez que um método for utilizá-lo, mas isso faria com que esse comando de instanciar o Scanner se repetisse várias vezes sem necessidade - em outras palavras, estamos usando várias instancias diferentes de Scanner no lugar de uma que já atenderia toda a aplicação.
Uma ideia que você pode experimentar para evitar ter que passar o Scanner como argumento em todos os métodos, é criar um atributo private Scanner scanner na classe RelatoriosService e dentro do método inicial(Scanner scanner), você atribui esse scanner (argumento) que recebemos como parâmetro do SpringDataApplication ao atributo scanner que acabamos de criar:
package br.com.alura.spring.data.service;
// imports
@Service
public class RelatoriosService{
// outros atributos
private Scanner scanner; // criando atributo scanner
// construtor
public void inicial(Scanner scanner) {
this.scanner = scanner; // atribuindo o argumento scanner ao atributo scanner
while (system) {
// código omitido
}
}
// outros métodos
O motivo para fazermos isso é que agora, como o scanner se tornou um atributo da classe, todos os métodos de RelatoriosService tem acesso à ele. Em outras palavras, pode remover os scanners dos parâmetros dos métodos pois agora todos tem acesso à ele sem precisar passá-lo como argumento.
Não sei se conseguir ser claro na explicação, mas qualquer dúvida é só avisar!
Forte abraço e bons estudos!!