¿No debería Object.clone() necesitar una conversión explícita?

Por qué no se ¿La llamada Object.clone () necesita un lanzamiento explícito? ¿No es esta una excepción a la regla de "el abatimiento siempre necesita y el lanzamiento explícito"? Compilé y ejecuté con éxito el siguiente código utilizando la línea de comandos de javac y Eclipse Helios con JDK1.6.0_29.

public class Main {

    public static void main(String[] args) {
        byte[] original = { 1, 2, 3, 4 };
        byte[] copy = original.clone();

        for (byte b : copy) {
            System.out.print(b + " ");
        }

        int[] originalInt = { 11, 22, 33, 44 };
        int[] copyInt = originalInt.clone();

        for (int i : copyInt) {
            System.out.print(i + " ");
        }

        String[] originalStr = { "1", "2", "3", "4" };
        String[] copyStr = originalStr.clone();

        for (String s : copyStr) {
            System.out.print(s + " ");
        }

        Main[] originalMain = { new Main() };
        Main[] copyMain = originalMain.clone();

        for (Main m : copyMain) {
            System.out.print(m + " ");
        }
    } // end method main

} // end class Main

preguntado el 22 de mayo de 12 a las 15:05

1 Respuestas

No estas llamando Object.clone(). Estas llamando T[].clone(), que se anula para volver T[].

Miembros de matriz JLS 10.7:

Los miembros de un tipo de matriz son todos los siguientes:

  • El método público clone, que anula el método del mismo nombre en la clase Object y no arroja excepciones comprobadas. El tipo de retorno de la clone método de un tipo de matriz T[] is T[].

contestado el 22 de mayo de 12 a las 15:05

¡Gracias, una vez más, no deberíamos realmente usar funciones de GUI amigables como la declaración abierta en Eclipse! ;P Gracias aix! - Zecas

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.