¿Existe algun metodo equivalente a ... ?Arrays.asList(1,2,3,4,5,6,7,8,9,0).toArray()
En otras palabras: ¿Conocen algun metodo que devuelva un array que contenga todos sus argumentos?
Algo como esto:public static <T[]> funcionQueDevuelveArray(T... t){
return t;
}
Seria muy practico, asi que tendria que haberlo digo yo.
Tu código ya lo hace muy bien;
public int[] foo(int ... nums){
return nums;
}
int[] Arreglo = foo(5,4,4,2,4);
Vaya, es que no sé para qué querrías hacer eso :huh:
Exacto yo tampoco le veo sentido si lo que quieres es inicializar un arreglo
pues basta que hagas esto
int []arreglo={1,2,3,4,5};
Dices que para inicializar un arreglo puedes usarint[] i = {1,2,3,4,5,6,7,8,9,0};
Pero, ¿Te has fijado que, por ejemplo, si lo declaras e instancias en distintas lineas de ese modo te da error de compilación?
De todos modos, que no sepas para que pueda servir algo no significa que no sea util. De momento solo quiero saberlo por curiosidad.
Además,(y esto va para el tipo de mas arriba) ya se que puedo hacer un código tal que asi://No se porque los ingleses le llaman "foo" a las funciones que usan de ejemplo
//En los diccionarios de ingles tampoco encuentro nada =/
public <T[]> foo(T ... nums){
return nums;
}
int[] Arreglo = foo(5,4,4,2,4);
Pero la pregunta es si YA EXISTE un metodo como ese implantado en java para no tener que crearlo una y otra vez cada vez que quiera darle uso
Nadie ha dicho que no sea útil, al menos yo no pretendía hacerlo, lo que quise decir es que no conozco cuál es la utilidad. Me gustaría conocerla, todo conocimiento viene bien.
Citar¿Te has fijado que, por ejemplo, si lo declaras e instancias en distintas lineas de ese modo te da error de compilación?
Se puede así:
int[] Arreglo;
Arreglo = new int[]{24,2,2};
y no veo mucha diferencia.
Suerte.
¡OSTRAS! ¡PUES NO LO SABIA!
Cuando lo intentaba en lineas diferentes hacia esto:int[] i;
i = {1,2,3,4,5,6,7,8,9,0}//Error de compilación
Ahora si entiendo porque preguntabas si tenia una utilidad =D
Lo de la funcion era simplemente para hacer int[]{1,2,3,4,5,6,7,8,9,0}
De la unica forma que se me ocurria, es decir, devolviendo el array de los argumentos de la funcion.
¿Por cierto, donde aprendiste eso? he visto muchos tutoriales en internet y en ninguno de ellos lo enseñan =/ De hecho, no sale ni en el tutorial oficial de Oracle:
https://docs.oracle.com/javase/tutorial/java/nutsandbolts/arrays.html
De todos modos voy a dar este tema por zanjado, aunque todavia esta pendiente tu respuesta.
int[] arreglo;
Con eso te creas una referencia a un arreglo, pero solo una referencia, es decir, puede estar apuntando a nada( una referencia nula) o puede estar apuntando a un arreglo. En el caso anterior es simplemente una referencia nula.
con new puedes crear un objeto y hacer que una referencia apunte al objeto. Puedes crear tantos objetos quieras y hacer que la referencia apunte a ellos:
int[] arreglo;
arreglo = new int[] {3,4,1};
arreglo = new int[] {3,4,1,4,2,3};
arreglo = new int[] {3,4,1,4,2,3,4,2,4,2};
la referencia "arreglo" se queda con el último objeto creado, pero ¿Qué pasa con los objetos anteriores? Pues java tiene algo que se llama recolector de basura y te hace el favor de eliminar los objetos que ya no estas utilizando cuando le parezca conveniente, ¿y siempre lo hace? Pues por algo java consume mucha Memoria RAM, pero no tienes que estar preocupándote de eliminar los objetos.
Esto solo es válido para los objetos, no es lo mismo con las variables primitivas int,char,float etc..
Ahora no sé si lo que escribí fue en vano, al menos creo que entenderás que un arreglo es una especie de objeto por si ya sabías el resto.
Edito: El código que no sabías es sólo una forma diferente de hacer esto;
// declares an array of integers
int[] anArray;
// allocates memory for 10 integers
anArray = new int[10];
// initialize first element
anArray[0] = 100;
// initialize second element
anArray[1] = 200;
// and so forth
anArray[2] = 300;
anArray[3] = 400;
anArray[4] = 500;
anArray[5] = 600;
anArray[6] = 700;
anArray[7] = 800;
anArray[8] = 900;
anArray[9] = 1000;
Suerte.
Todo eso que me has dicho ya lo savia U,u
El caso es que en cada tutorial que veia me hablaban de una forma de inicializar los arrays asi:
int[] array = {1,2,3,4,5,6,7,8,9,0};
Sin embargo esta forma solo es valida cuando se inicializa al mismo tiempo que se declara. El caso es que nunca en mi vida vi algo comonew int[]{1,2,3,4,5,6,7,8,9,0};
ya que lo mas parecido que vi eraint[] array = {1,2,3,4,5,6,7,8,9,0};
Asi que te pregunto donde has visto eso porque en todos los tutoriales, incluso en el tutorial oficial de oracle, no sale algo como eso. Pero todo lo demas que dijiste ya lo sabia.
Yo lo descubrí. Me puse a buscar por Internet y encontré que otras personas lo utilizan( como era de esperar, claro):
Usado en una linea (http://stackoverflow.com/questions/3160347/java-how-initialize-an-array-in-java-in-one-line)
Vaya, aquí lo usan muchas veces (http://stackoverflow.com/questions/8068470/java-initialize-an-int-array-in-a-constructor)
Suerte.