Buenas, como estan? No entiendo en la declaracion del metodo static <strong>&lt;T&gt;</strong> List&lt;T&gt; getList (T… elements) porque...

Víctor Kalcich

Víctor Kalcich

Pregunta
studenthace 5 años

Buenas, como estan?

No entiendo en la declaracion del metodo

static <T> List<T> getList (T… elements)

porque se escribe <T>? a que hace referencia? si el metodo es estatico y lo que va a retornar es la lista de T y luego sigue el nombre del metodo que es getList.

Gracias.

3 respuestas
para escribir tu comentario
    Sinuhe Jaime Valencia

    Sinuhe Jaime Valencia

    teacherhace 5 años

    Retomando, solo para mantener fresca la informacion:

    Cuando decimos

    <T>
    al principio de un metodo/funcion estamos diciendo algo tipo:

    Hey, este metodo no trabaja con un tipo de dato concreto, asi que puede trabajar con cualquier dato, puede ser un numero, una clase, cualquier dato!

    Asi, donde anteriormente tendriamos un tipo de dato, ahora tenemos un

    T

    Puesto de otra forma, si esta funcion trabajara con

    String
    se definiria asi:

    static List<String> getList(String... elements){ //code here... }

    Como este metodo/funcion no esta restringido a un solo tipo podemos usar

    T
    en lugar de
    String
    para denotar eso.

    Pero como el metodo es

    static
    tenemos que agregar cierta informacion al compilador, decirle:

    Mira amigo compilador, si te encuentras con

    T
    , en realidad debes reemplazarlo con el tipo correspondiente, no te asustes, te aviso para que sepas manejar el tipo correcto, cuidate compi, cuida mi codigo.

    De esa manera el compilador va a encargarse de reemplazar las llamadas a esta funcion con el dato que sea necesario.

    Julian Andres Fuentes Vidal

    Julian Andres Fuentes Vidal

    studenthace 5 años

    Básicamente el <T> le indica al compilador que T es una clase genérica para que NO vaya a buscar una clase con el nombre T. Por ejemplo, en el retorno List<T> el compilador sabe que no existe ninguna clase T gracias a que después del static le indicaste que <T> es genérica.

    Julio Jaramillo

    Julio Jaramillo

    studenthace 5 años

    Hola Victor, respondiendo a tu pregunta "T" hace referencia al tipo de dato que se manejará tu método cuando este se implemente en un programa dentro de su implementación;

    Este concepto se llama Generics y este tema de Java nos permite trabajar una implementación que se puedan tratar multiples tipos de datos.

    Esa flexibilidad se define en la parte que te marco con parentesis en el código de abajo; lo que decimos ahi, es que la letra T sera un valor referencia de tipo dato en todo el método, tu podrías utilizar otras letras pero hay un standard por los desarrolladores de Java que son:

    E - Element K - Key. N - Number. T - Type. V - Value.

    En el momento de poner codigo dentro de este metodo de abajo se tiene que programar lineas que pueda manejar con List por que es lo unico estatico que tenemos en nuestro metodo.

    public static **<T>** List<T> getListOf(T... items) { //You code will be here }

    Entonces cuando implementamos ese codigo de abajo sabemos que Utils.getListOf usa Generics y esta abierto a trabajar con multiples datos; pero de tu lado izquierdo sabe que datos va a recibir, y entonces el compilador Java adapta Utils.getListOf a lo que necesita proveer y obtiene una lista de Strings.

    List<String> coolNames = Utils.getListOf("Sinuhe", "Ada", "Victoria", "Brenda");

    Espero haberte ayudado, saludos!

Curso de Programación Funcional con Java SE

Curso de Programación Funcional con Java SE

Desarrolla aplicaciones funcionales en Java SE, aprendiendo a utilizar lambdas, streams y la clase Optional. Implementa colecciones y API RESTful, mientras construyes una herramienta CLI para buscar empleos en GitHub.

Curso de Programación Funcional con Java SE
Curso de Programación Funcional con Java SE

Curso de Programación Funcional con Java SE

Desarrolla aplicaciones funcionales en Java SE, aprendiendo a utilizar lambdas, streams y la clase Optional. Implementa colecciones y API RESTful, mientras construyes una herramienta CLI para buscar empleos en GitHub.