Este es un problemilla que me surgió el otro dia al intentar «castear» el Object [] que devuelve una colección.
Observemos el código:
public class TestVectores{ public static void main(String []args){ // JAVA permite que el vobj apunte a un vector que contenga // elementos de su tipo, o derivados. String deriva de // Object. Object [] vobj = new String [] {"uno", "dos", "tres"}; // Conversion valida, vobj esta apuntando a un vector de // String. String [] vcads = (String []) vobj; ArrayList vlists = new ArrayList(); vlists.add("uno"); vlists.add("dos"); vlists.add("tres"); // La conversión de abajo no funciona. Object [] vList = vlists.toArray(); String [] vcads2 = (String []) vList; /* vlist.toArray() devuelve un Object [], * pero este no está apuntando a un String [], sino a un * Object [] en el que cada posición tiene un String. */ // Algo asi internamente.. Object [] miArrayList = new Object [3]; miArrayList[0] = new String("uno"); miArrayList[1] = new String("dos"); miArrayList[2] = new String("tres"); // Por esto la conversión no se puede hacer así String [] vcads3 = (String []) miArrayList; // hay que hacerla elemento a elemento } }