Hola Te saludo nuevamente.
Ubaldo Acosta espero que estés listo para comenzar con esta elección.
A continuación vamos a estudiar el tema de genéricos en Java estás listo.
Vamos genéricos en Java.
Vamos a estudiar en esta elección los tipos genéricos en Java los tipos genéricos o genéricos se introdujeron
en la versión 1.5 y fue uno de los mayores cambios para esta versión.
Anteriormente teníamos que saber exactamente el tipo de dato que íbamos a utilizar para poder pasar
por ejemplo parãmetros a una función o para instancias una clase.
Sin embargo con ayuda de los genéricos podemos dejar pendiente el tipo de dato hasta el momento de instancias
alguna clase genérica o del paso de un parámetro genérico
podemos observar en el código mostrado una clase que define un tipo genérico con el uso del operador
Diamante en la definición de la clase.
Esto quiere decir que el tipo lo conoceremos hasta el momento en que sea utilizada esta clase y por
ello se conoce como tipo genérico La T significa básicamente un tipo genérico que será reemplazado al
momento de utilizar esta clase por lo que la T es simplemente el nombre que le damos al tipo genérico
que vamos a utilizar.
Existen varios nombres que podemos utilizar como veremos en la siguiente lámina posteriormente en la
clase definimos un atributo del mismo tipo T el cual lo inicializar por medio del constructor de esta
clase y podemos ver que cuando utilizamos esta clase en el método mostrado al momento de crear el objeto
de esta clase especificamos por medio del operador Diamante.
El tipo de dato que nos interesa utilizar y aquí es donde el uso de clases genéricas es muy útil ya
que nos permite definir el tipo de dato que queremos utilizar hasta el momento de instancia.
Un objeto de nuestra clase y así determinar funcionalidad cada vez más genérica valga la redundancia.
De hecho al utilizar interfaces clases abstractas y polimorfismo ya hemos creado varios métodos genéricos
ya que pueden ser utilizados por varios tipos de datos.
Sin embargo este concepto de genéricos va un paso más allá y nos permite definir el tipo a utilizar
y crear métodos aún más genéricos de los que hemos creado hasta el momento.
Finalmente el método obtener tipo nos permite mandar a consola el tipo de dato que hemos definido para
la clase genérica y así como hemos utilizado el tipo integer para instancias nuestra clase genérica
podemos utilizar cualquier tipo de dato.
Sin embargo no podemos utilizar tipos primitivos sino sólo tipos obvie
tipos genéricos en Java
al utilizar y crear tipos genéricos podemos utilizar varios nombres como la T que ya hemos utilizado.
Sin embargo existen algunas convenciones que podemos seguir al momento de crear nuestras clases genéricas
y así utilizar buenas prácticas al momento de crearlas.
Obviamente también nos es útil al momento de usar estos tipos genéricos en clases ya creadas dentro
de lapida y Java ya que sabremos con mayor certeza para qué sirve cada clase y tipo genérico que estemos
utilizando.
Así que en la tabla podemos ver cómo aplicar los tipos genéricos al framework de colecciones de IAVA
así que podemos observar en la lámina que el tipo genérico significa elemento y se utiliza generalmente
por el framework de colecciones de Java.
La CAM significa aquí es decir que es una llave utilizado en tipos mapa la ENES significa nombre y es
utilizado para describir números la tez significa Taipe y representa cualquier tipo es decir una clase
a la vez significa Balio y representa un valor también utilizado en tipos MAP la S la U y la que se
utiliza para representar cualquier otro tipo de datos tipos genéricos.
En Java
el tema de genéricos fue mayormente utilizado para cambiar varias de las APIs de Java pero en particular
el API de freímos de Collections fue una de las APIs más beneficiadas ya que como podemos ver anteriormente
era necesario definir un tipo lista.
Sin embargo no había una certeza de que almacenará un solo tipo y así evitar problemas de conversión
de objetos al momento de extraer sus elementos.
Por ello anteriormente las listas almacenaban un tipo obvie y al momento de extraer el objeto de la
lista el compilador tenía un Object y por lo tanto era necesario hacer un casting del objeto extraído.
Como se observa en el Código de la clase sin generis esto podía provocar problemas ya que no había ninguna
certeza de que la lista tuviera únicamente enteros ya que podía almacenar cualquier tipo de dato debido
a que soportaba tipos obvien y al momento de extraer un elemento podríamos obtener errores de tipo al
momento de extraer los elementos.
Sin embargo con las colecciones genéricas podemos declarar una lista de un tipo en concreto y agregar
a esta lista sólo los tipos o subtipos compatibles según las reglas de un casting que mencionamos.
En el tema de conversión de objetos como podemos observar en el ejemplo de con Genetrix observamos que
para definir la lista estamos utilizando el operador Diamante y especificamos que los objetos que podemos
agregar a esta lista son exclusivamente de tipo integer o subclases del tipo Integer.
De esta manera Cuando extraemos los valores de esta lista estamos seguros que serán de un tipo compatible
con el tipo integer y por lo tanto no es necesario hacer un casting o conversión de objetos del objeto
extraído.
Por lo tanto las colecciones genéricas ofrecen la seguridad de que en tiempo de compilación los datos
a almacenar son sólo del tipo especificado y eliminan la necesidad de hacer una conversión de objetos.
Sólo debemos recordar que se necesita la versión 1.5 o mayor del j de Cadellada en la figura podemos
observar cómo se cambió la definición de las interfaces y clases de la API de Collections y ahora se
utilizan tipos genéricos en su definición.
Vamos a crear a continuación algunos ejemplos para poner en práctica este concepto de manejo de genéricos.