Anda di halaman 1dari 2

Monther Basir IPC1 “A”

201807120 28/04/2019

Tarea #6: Generics en Java

Los generics fueron introducidos en la versión 5 de Java en 2004 junto con otras muchas novedades
suponiendo en su historia una de las mayores modificaciones al lenguaje Java. Los generics son
importantes ya que permiten al compilador informar de muchos errores de compilación que hasta el
momento solo se descubrirían en tiempo de ejecución, al mismo tiempo permiten eliminar los cast
simplificando, reduciendo la repetición y aumentando la legibilidad el código. Los errores por cast
inválido son especialmente problemáticos de debuggear ya que el error se suele producir en un sitio
alejado del de la causa.Los generics nos permiten manipular y operar con objetos sin especificar su
tipo y posibilitan reutilizar código, además de ofrecer type safety, gracias al chequeo de tipos durante
la compilación.
En este nuevo universo que abrieron los ​generics​, también es posible crear métodos genéricos,
agregándoles distintos parámetros con tipos genéricos (esto es similar a declarar un tipo genérico,
pero su alcance se limita al método en el que se declaró). Además, una clase genérica puede tener
múltiples parámetros (​multiple type parameters​). Dichos parámetros con tipo (aquellos que son un
marcador determinado por quien encarga un trabajo en la creación de una variable de tipo genérico)
pueden ser reemplazados por argumentos con tipo (parameterized types). Un modo de hacerlo es el
siguiente: Box<Integer>. Otra opción es crear una clase genérica con argumentos sin tipo (raw
types). Por ejemplo: Box<T>.

Convención de nombres

Dado que se trata de tipos genéricos, su nomenclatura no afecta su comportamiento y podría


designarse cualquier nombre para un genérico en Java. Sin embargo, existen convenciones para los
nombres de estos tipos cuyo objetivo es mejorar la legibilidad e interpretación del código. Algunas de
importancia son:

● E – Element.
● K – Key.
● V – Value.
● N – Number.
● T – Type.
● S, U, V, y así sucesivamente, para más tipos.
Ventajas (y desventaja)

Entre los pros de utilizar generics, podemos destacar:

● Permite la reutilización de código: es posible utilizar el mismo código para tipos diferentes.
● Evita el casteo de clases (por casteo entendemos realizar cambios entre tipos de datos
distintos, donde chocan tipos de valores de datos).
● Código de mayor calidad, legible y limpio, si se utilizan las convenciones con criterio.
● Type safety: código más seguro, ya que reduce las oportunidades de que se introduzca un
error.
● Rapidez de ejecución, dado que no hay chequeo de tipos en este tiempo. El casteo, en
cambio, requiere que la JVM haga chequeo de tipos en tiempo de ejecución, en caso de que
sea necesario ejecutar una ClassCastException.
● Chequeo de tipos en tiempo de compilación: el compilador verifica que se utilice la clase
genérica donde se la invoca; en cambio, no lo hace cuando se invoca al tipo Object.
● Como contra, podemos señalar cierta dificultad en la interpretación del código si no se utilizan
los nombres con claridad o no se cuenta con documentación.

Como contra, podemos señalar cierta dificultad en la interpretación del código si no se utilizan los
nombres con claridad o no se cuenta con documentación.

Ejemplo

Para poder visualizar y entender mejor lo que venimos hablando a lo largo del artículo, les
proponemos una clase completa con un tipo genérico:

1 public class Box<T> {

2 private T t;

3 public void add(T t) {

4 this.t = t;

5 }

6 public T get() {

7 return t;

8 }

9 }