Classe <I>

Pessoal, estou tentando entender uns códigos aqui, mas estou apanhando de uma certa classe ‘I’…

public T find(I id) {
	return entityManager.find(clazz, id);
}

O que ela significa?

colega, esse I deve estar errado ai, deve ser erro do codigo

esse I deve ser Integer, int ou Long, depende de como está no atributo da classe que vai pesquisar

onde voce viu esse codigo?

public T find(Long id) { // por exemplo
return entityManager.find(clazz, id); 
} 

Neste caso o I é provavelmente o parâmetro que indica qual tipo terá a chave primária da entidade.

Esse recurso se chama Generics.

Tanto o I, como o T nesse método representam tipos que serão definidos na hora de usar a classe.

No seu caso, por exemplo, deve existir uma interface assim:

interface Dao&lt;T, I&gt; {
  T find (I id);
}

Então, se sua classe Produto, por exemplo, tiver um id que seja long você pode fazer:

class ProdutoDao implements Dao&lt;Produto, Long&gt; ....

Mas se sua classe Aluno, por exemplo, tiver um id que seja string você pode fazer:

class AlunoDao implements Dao&lt;Aluno, String&gt; ....

Reparem que ambos usam a mesma interface, mas parametrizada com tipos diferentes.

AbelBueno, obrigado pelo esclarecimento (:
E se eu tiver um Id que for composto, tem jeito de resolver com isso?