Olá Vinicius, tudo bem?
"Teríamos que fazer um casting explícito ao utilizar o método caso fosse Object?
"
Isso mesmo. Se formos analisar o T ou o Object separadamente, não haveria grandes diferenças já que o T representa um tipo genérico que vai dar espaço para algum outro objeto quando o método for chamado. A diferença aparece quando usamos uma classe genérica, como uma List<Foo>
, por exemplo. Agora o compilador sabe que essa lista deve armazenar apenas objetos do tipo Foo
, portanto não precisamos mais fazer o casting também.
Com Generics, somos capazes de fazer muito mais. Se tiver interesse em saber mais, recomendo ler esse post (está em inglês).
Se algum ponto ainda não está claro é só avisar!
Abraços e bons estudos!!