Java Generic Methods

Los Java Generic Methods son métodos genéricos de Java que no pertenecen a una clase concreta . Esto en un primer momento nos puede resultar chocante pero a veces ocurre. Recordemos que la forma de construir clases  genéricas es :

package com.arquitecturajava;

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

public class Bolsa<T> {

 private List<T> lista= new ArrayList<T>();

 public void add(T item) {

 lista.add(item);
 }

}

El método add es un método genérico ya que se apoya en el tipo T que la clase define.

Java Generic Methods

Sin embargo cuando nos referimos a métodos genéricos estamos hablando de métodos que son genéricos sin pertenecer a una clase genérica. Esto puede parecer raro en un primer momento , lo veremos más claro en código:


package com.arquitecturajava;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;

public class PrincipalGenericMethod {
public static void main (String args[]) {

Collection<String> lista= new ArrayList<String>(Arrays.asList("A","B","C"));

Collection<String> nueva= duplicarColleccion(lista);

nueva.forEach(x->System.out.println(x));

}

public static <T> Collection<T> duplicarColleccion(Collection<T> coleccion) {

coleccion.addAll(coleccion);
return coleccion;

}
}

En este caso el método duplicarColleccion se encarga de volver a copiar los mismos elementos en la colección para tenerlos duplicados. Es un método genérico ya que admite cualquier tipo de colección cambiando el tipo T. Pero ademas no pertenece a ninguna clase en concreto ya que el tipo T se declara de forma explicita en el método. Para entenderlo de forma más sencilla es como si la declaración <T >de la clase parara al propio método.

Es un código que cuesta entender ya que parece que tiene dos parámetros de retorno genéricos y no solo uno. En primer lugar <T> y en segundo lugar Collection<T>. Los Java Generic Methods aportan una mayor flexibilidad a nuestra programación

Otros artículos relacionados: