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