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 Saini is an android developer, who also works sometimes as a web developer., He likes to read books and write about various things.
LinkedIn