Função get()

public Optional<UsuarioLogin> logarUsuario(Optional<UsuarioLogin> usuarioLogin) {
	Optional<Usuario> usuario = usuarioRepository.findByUsuario(usuarioLogin.get().getUsuario());

	if (usuario.isPresent()) {
		if (encoder.matches(usuarioLogin.get().getSenha(), usuario.get().getSenha())) {
			String auth = usuarioLogin.get().getUsuario() + ":" + usuarioLogin.get().getSenha();
			...
		}
	}

Obs: Usuario e UsuarioLogin são duas classes separadas

Olá boa noite, tenho uma duvida referente a função get. Aqui nessa classe é usado um get () e dps um getUsuario().

Optional<Usuario> usuario = usuarioRepository.findByUsuario(usuarioLogin.get().getUsuario());

Pq isso é feito? Não seria mais facil usar simplemente o getUsuario?

Antes de explicar, já saiba que receber um Optional como parâmetro não é uma boa prática, mas sim, retornar um Optional é.

O optional é uma classe value-based com alguns métodos utilitários (como map e flatMap, por exemplo).

No seu caso, é necessário usar o método get para poder recuperar o valor contido no Optional, se ele existir. Caso não exista, esse método irá lançar uma exceção.

Caso não queira isso, basta receber o UsuarioLogin como parâmetro sem usar o Optional.

Documentação: https://docs.oracle.com/javase/8/docs/api/java/util/Optional.html

1 curtida