Generics <E> en Java

Rupam Yadav 12 octubre 2023
Generics <E> en Java

Los Generics se añadieron en Java 5 para mejorar la abstracción y proporcionar una forma de usar un método, interfaz o clase única con diferentes objetos o tipos de datos.

Existe una convención de nomenclatura común relacionada con Generics, como T representa Tipo y V se usa para Valor. Nos fijamos en E, otro nombre de parámetro de tipo utilizado en Generics que generalmente significa Elemento en este artículo.

Uso de Generics <E> en Java para crear una nueva lista

La mejor manera de entender Generics es usando una colección porque, sin Generics, las colecciones como las listas solían requerir mucho código para escribir. Aún así, podemos crear una List o cualquier otra colección con muy poco código después de introducir Generics.

El nombre genérico <E> significa Elemento y se usa comúnmente en Java Collections Framework. En el siguiente ejemplo, creamos un método estático llamado newListWithElements() que toma un parámetro de tipo genérico E con el operador de argumentos variables ... llamado listElements.

El método newListWithElements() devuelve una List de tipo <E> que es un parámetro de tipo genérico. También usamos un parámetro de tipo antes del tipo de retorno y después de static o cualquier modificador de acceso usando un método genérico.

Dentro de la función, creamos una variable int listElementsSize y la inicializamos con la longitud del parámetro listElements. Si es null, lo inicializamos con cero.

Luego creamos un constructor ArrayList y le pasamos listElementsSize que es del tamaño de la List, que devuelve una List que es de tipo <E>.

Ahora recopilamos todos los elementos listElements y creamos una nueva lista usando Collections.addAll() que agrega todos los elementos a la nueva lista listOfElements. Tenemos una nueva lista que devolvemos del método.

En la función main(), llamamos a newListWithElement() tres veces con tipos como String, Integer y Boolean. Los Generics hacen posible crear una lista de múltiples tipos de objetos con un solo método.

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

public class JavaEGenerics {
  public static void main(String[] args) {
    List<String> newStringList = newListWithElements("element1", "element2", "element3");
    List<Integer> newIntList = newListWithElements(11, 12, 13);
    List<Boolean> newBooleanList = newListWithElements(true, false);

    System.out.println(newStringList);
    System.out.println(newIntList);
    System.out.println(newBooleanList);
  }

  static <E> List<E> newListWithElements(E... listElements) {
    int listElementsSize = 0;

    if (listElements != null)
      listElementsSize = listElements.length;

    List<E> listOfElements = new ArrayList<>(listElementsSize);

    if (listElements != null)
      Collections.addAll(listOfElements, listElements);

    return listOfElements;
  }
}

Producción :

[element1, element2, element3]
[11, 12, 13]
[true, false]
Rupam Yadav avatar Rupam Yadav avatar

Rupam Saini is an android developer, who also works sometimes as a web developer., He likes to read books and write about various things.

LinkedIn

Artículo relacionado - Java Generics