Se trata de crear clases, interfaces y métodos parametrizados, que nos van a permitir reutilizar el mismo código para distintos tipos de datos.
- Permite la reutilización de código: usar el mismo código para tipos diferentes
- Código de mayor calidad, legible y limpio
- Seguridad de tipos: se reduce la posibiliad de que ocurra un error
- Evita el casteo de clases
- Rapidez de ejecución, las comprobaciones de tipo se hacen durante la compilación. En tiempo de ejecución no existe información sobre tipos.
- Se pueden restringir los tipos utilizando 'tipos límite'
(<T extends Number>)
⚠️
Sólo podemos usar tipos de referencia, NO tipos primitivos