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
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!!