Casting de arrays

Iniciado por 4dr14n31t0r, 20 Noviembre 2015, 00:09 AM

0 Miembros y 1 Visitante están viendo este tema.

4dr14n31t0r

Código (java) [Seleccionar]
byte b = (byte)7 //no problem
byte[] array = (byte[]) new int[7] //error de compilacion

Creo que el problema habla por si solo, pero por si no ha quedado claro la pregunta es:
¿Como puedo hacer un casting de arrays?

Edito: He puesto como ejemplo tipos primitivos pero busco una forma que tambien funcione con clases

0xFer

#1
No sé si se pueda hacer el cast de manera directa así como pretende hacer tu código, lo que si puedes hacer es convertir cada uno de los elementos del arreglo, por ejemplo:

Código (java) [Seleccionar]


int[] ArregloInt =new byte[] {123, 12, 87};
byte[] ArregloByte = new int[ArregloInt.length];

// converción de cada elemento
for (int i = 0; i <ArregloByte.length; ArregloByte[i] = ArregloInt[i++] );


Ten cuidado cuando conviertas int a byte porque un byte ocupa 8 bits mientras que un int puede ocupar más, si valor del int que quieras convertir no puede ser contenida en 8 bits entonces el int convertido a byte tendrá un valor digamos que "extraño" porque se puede tomar los bits más significativos o menos significativos dependiendo de la arquitectura de tu computadora.

en el ejemplo que te mostré no hay problema porque los valores 123,12 y 87 pueden ser almacenados en 8 bits, es decir, en 1 byte.
Código (java) [Seleccionar]
int getRandomNumber(){
    return 4; //chosen by fair dice roll
              //guaranteed to be random
}