El cast es para realizar conversiones de tipo. Mas que ver su utilidad con los tipos básicos (primitivos) o las referencias, dedico esta entrada a ver cuando compila y cuando no compila. El cast compila siempre que nos movamos hacia abajo por la jerarquia de herencia. Debemos recordar que existe una clase de la que heredan todas (TODAS), excepto los tipos básicos (primitivos) ya que no son objetos, la clase Object.
Object a; int [] v; int [][] v2; a = new int [3]; v = (int []) a; // compila y correcta. a = new int [3]; v2 = (int [][]) a; // compila y no correcta v = (int []) v2; // no compila
Además debemos recordar, que todos los vectores (sea cual sea su dimensión) en JAVA, son objetos que herendan de Object.
La penultima conversión compila, porque nos movemos hacia abajo en la jerarquia, sin embargo, no ejecutará de forma correcta, provocando un error de ejecución.
La última conversión no compila, porque no es correcta y no nos movemos hacia abajo en la jerarquia. int [] no hereda de int [][].
Hola Jose, yo particularmente agregaria mas informacion relacionada con el casteo en si el implicito y el explicito. Te dejo un link relacionado a este tema.
http://java-white-box.blogspot.com/2013/12/javaplayer-casteos-en-java-casteo.html
Saludos