Generics é uma característica avançada que foi inserida no Java na versão 1.5, que possibilita a realização da verificaçõa de tipos de suas Collections e ArrayLists, com apenas os tipos de objetos que você definiu. Por exemplo: O Generics apenas verifica se você está utilizando corretamente um Comparator para objetos que você esteja Ordenando. Este tipo de verificação ocorre em tempo de compilação (evitando os antigos erros, as surpresas que tinhamos dos erros gerados em tempo de execução, devido a tipos incompatíveis). A linguagem C++ também possui algo similar, que é chamada de templates.
Leia o post sobre o assunto : [link] (em inglês)
Fonte : DZone