Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

[Dúvida] Métodos que usam generics declarados de maneiras diferentes

Qual a diferença entre métodos que são declarados com e sem esse < T >? Exemplo:

    public T getConteudo() {
        return conteudo;
    }
    
    e
    
    public <T> T somaConteudoNaCaixa(T valor) {}

Repare que no primeiro exemplo só tem um T e no segundo exemplo tem < T > e T.

1 resposta
solução!

Oii, Malkon! Tudo bem?

Ótima pergunta, vamos entender isso juntos! A diferença está muito relacionada com o genercs declarados de maneiras diferentes.

No primeiro exemplo, com o método getConteudo() o T é um tipo genérico. A classe que contém este método deve ser uma classe genérica para poder rodar o código sem erros, onde o T seja um parâmetro de tipo que será associado à definição de uma classe.

No segundo exemplo, com o método somaConteudoNaCaixa(T valor){}, o método que é genérico não importa se a classe é ou não é genérica. O <T> antes de somaConteudoNaCaixa(T valor){} é indicativo que o método possui o seu parâmetro próprio de tipo genérico. O T só é considerado válido dentro do contexto do método como um todo.

Em resumo, o método public T getConteudo() o tipo genérico T é definido no nível da classe. E o public <T> somaConteudoNaCaixa(T valor), o tipo genérico T é definido no nível do método.

Reuni alguns links para que você possa expandir os seus conhecimentos sobre o tema:

A página da documentação pode abrir em inglês, caso não tenha familiaridade com o idioma, clique com o botão direito do mouse em qualquer canto da página e escolha a opção Traduzir para o português.

Espero ter ajudado. Qualquer dúvida, não hesite em recorrer ao fórum.

Bons estudos, Malkon!