JAVA. Vectores y polimorfismo.

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
         }
}

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *