Opa, Daniel! Claro que posso explicar com mais detalhes!
Qdo vc diz: "O método find() recebe um parâmetro .class pra saber qual entidade está sendo buscada.", eu não entendi porque tem que ser Conta.class ao invés de Conta sem a extensão que é como venho programando até aqui. Qual a diferença de Conta para Conta.class?
Conta
representa um tipo enquanto Conta.class
retorna um objeto contendo informações sobre a classe em questão. Esse objeto é um instância da classe Class
.
O que é um "método parametrizado para um tipo T"?
Uma classe pode ser parametrizada através de generics. Por exemplo, quando criamos uma lista de strings fazemos List<String> lista = new ArrayList<>()
. Veja que entre o sinal de maior e menor eu parametrizei a lista dizendo que ela será uma lista de strings. Ou seja, a interface List
é uma interface parametrizável e isso a permite saber com que tipo de informação ela trabalha. O mesmo ocorre com a classe Class
do Java, pois ela é uma classe parametrizável.
E o que seria um "objeto do tipo Class"?
A classe Class
é uma classe muito especial no Java! Ela faz parte do pacote de reflection do Java e seus objetos tem o poder de representarem qualquer classe contendo suas informações como atributos, métodos, construtores, etc.
Por fim, há dois cursos aqui na Alura sobre esse tema de reflexão em Java os quais eu mesmo ministro. Mas esse é um assunto muito complexo o qual eu não indico a você nesse momento, afinal de contas haverá diversas informações nesses cursos que não são necessárias para a continuação desse curso que vc está fazendo agora.
Pegou a ideia? Qualquer coisa é só falar!
Grande abraço e bons estudos, meu aluno!