No entiendo como funciona <code> static &lt;T&gt;List&lt;T&gt; getList(T... elements){ return Arrays.asList(elements); } </c...

Antonio Jose Dos Ramos Lugo

Antonio Jose Dos Ramos Lugo

Pregunta
studenthace 5 años

No entiendo como funciona

static <T>List<T> getList(T... elements){ return Arrays.asList(elements); }

Me explico, Regresa una T? y en los argumentos porque va T… elements? los 3 puntos es obligatorio? como funciona esta parte?

4 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.


    Sobre los

    ...
    , lo que representan es algo llamado
    vararg
    que se conoce como variadic o variable arguments. Significa que esta funcion puede trabajar con cualquier numero de argumentos, es decir, desde 0 hasta los que necesites. Por ejemplo, podriamos usar esta funcion asi:

    List<String> nombres = getList("Sier", "AntoCode"); List<String> vacia = getList();

    Es la misma funcion, llamada con una cantidad distinta de parametros.

    Gerald Zamora

    Gerald Zamora

    studenthace 5 años

    @sys515 porque de esa manera declares que vas a utilizar un objeto genérico llamado T, siempre que vayas a usar objetos genéricos en un método, los tienes que declarar primero,
    EJE: si quieres que este mismo método reciba otros 2 objetos genéricos, primero los declaras y luego los usas

    &lt;T, A, D&gt; List&lt;T&gt; getList(A a, D d, T... elements){ return Arrays.asList(elements); }

    ahora tu método recibe 2 objetos genéricos y una lista genérica

    Miguel Augusto Batz Tzul

    Miguel Augusto Batz Tzul

    studenthace 5 años

    No se si me puedas ayudar, de todo eso lo que no entiendo por que al inicio se coloca <T>, se que el T sea para objetos genericos. Pero por que ponerla al inicio del List<T>

    Gerald Zamora

    Gerald Zamora

    studenthace 5 años

    El T representa un objeto cualquiera, podría ser Integer, String, Persona etc... a esto se le llama programación genérica. En los parámetros los tres puntos significa que pueden pasar tantos objetos T como quieran, sino estuviera los 3 puntos, la función solo recibiría un objeto T, y Arrays.asList() lo que hace es tomar un grupo de objetos del mismo TIPO, y convertirlos en una lista de ese tipo (osea tipo T en este caso).

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.