Enjoy A New Student Discount All 55,000 Courses on sale for Only $12.99

Ends in 05h 23m 49s

Java para programadores – Genéricos

Estamos acostumbrados a conocer el  tipo de dato que nos llega. Cuando programamos una clase, y definimos métodos establecemos los tipos de datos (integers, string, …) que nos va a llegar, pero esto que parece tan sencillo y claro, puede sernos insuficiente a veces. Para esos casos existen las formas genéricas de definición.

Utilidad de los genéricos

Supongamos que tenemos que escribir una clase que nos guarde dos objetos, y que nos permita intercambiar sus posiciones; el código podría ser algo así:

Java.Clases genericas

Hasta aquí, todo bien. Esta clase cumple son su objetivo, ….siempre que  lo que queramos guardar sean Strings, pero y si son números, o son algún tipo de clase que hemos creado nosotros?

Naturalmente que la opción, seria pasarlo todo a «object», aunque entonces tendríamos el problema que colaría todo, que si nos equivocamos en la asignación de tipos, nadie nos avisará.

Otra opción seria crear tantas clases como tipos queramos tratar,  y seria bastante lógico hacer, cuando el tratamiento dependiera del tipo; cosa que en este ejemplo no pasa.

Entonces, la única solucion que nos queda es modificar la clase para que trabaje con tipos genéricos; la modificación seria así:

Java trabajando con genéricos

Lo que se hace, es indicar al principio, al lado den nombre de la clase, que vamos a recibir un parámetro de tipo (linea 3 <T>. Luego podemos utilizar esa letra (T) en todos los lugares en donde definiríamos tipo de argumento, por ejemplo las lineas 4 y 5 definen dos variables tipo String, si nos pasan String, o dos variables tipo Integer, si nos pasan Integer.

Podemos verlo funcionando en el siguiente ejemplo:

Java, trabajando con genericos

En la linea 6 creo un objeto Intercambio, pasando como tipo de argumento «String», y en la linea 7, hago lo mismo, pero pasandole como tipo de argumento «Integer». Debéis tener en cuenta, que solo puedo pasar tipos que no sean primitivos.

A partir de ese momento, ya puedo trabajar como si hubiera definido la clase específicamente para ese tipo; no necesito hacer ningún cast, cosa que necesitaría hacer si hubiera definido la clase con tipos Object

Genéricos y extends

Las cosas no son siempre tan fáciles. Habrá ocasiones en donde no podremos dotar a nuestras clases de tanta flexibilidad.

Supongamos que en nuestra clase, necesitamos hacer una comparación, o una operación aritmética…eso hace que necesitemos limitar la capacidad para recibir cualquier argumento.

Afortunadamente, eso es fácil de hacer, ya que podemos especificar la palabra «extends» para indicar que solo aceptamos argumentos que hereden de determinadas clases, o implementen determinadas interfaces; por ejemplo, si el nuevo objeto tiene que ser capaz de comparar los dos operando, podríamos exigir que solo nos pasaran tipos que implementaran la interfaz Comparable:

Genericos en Java. Extends

Deja un comentario

/*Si te ha gustado el artículo
no dudes en compartirlo*/

Facebook
Twitter
LinkedIn

Uso de cookies

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies, pinche el enlace para mayor información.plugin cookies

ACEPTAR
Aviso de cookies

Ver mi IP

Ver ip de mi máquina
tipo valor
Ip: 3.16.66.206
Proxy: 3.16.66.206
Remote host: ec2-3-16-66-206.us-east-2.compute.amazonaws.com
Remote port: 49058
** 3.16.66.206, 172.70.131.156