Pregunta

¿Por qué no el método .clone() especifica en la interfaz java.lang.Cloneable?

¿Fue útil?

Solución

Básicamente, es una interfaz roto. Ken Arnold y Bill Venners discuten en Java Temas de Diseño .

Arnold:

  

Si tuviera que ser Dios en este punto, y muchas personas son probablemente bueno que no estoy, yo diría Cloneable Desaprobar y tienen un Copyable, porque Cloneable tiene problemas. Además del hecho de que está mal escrito, Cloneable no contiene el método clone. Esto significa que no puede probar si algo es una instancia de Cloneable, echarlo a Cloneable, e invocar clone. Usted tiene que utilizar la reflexión de nuevo, que es horrible. Esto es sólo un problema, pero una duda me resuelvo.

Otros consejos

Vea este error en la base de datos errores de Java:

http://bugs.sun.com/bugdatabase/view_bug.do? bug_id = 4098033

En esencia, se trata de un defecto de diseño en versiones anteriores de Java que no tienen la intención de fijar en la interfaz Cloneable como hacerlo sería romper la compatibilidad con algo de código existente.

En Java, no es este concepto de interfaces de marcador. La interfaz Cloneable no tiene métodos o campos y sirve sólo para identificar la semántica de ser cloneable.

dev-x página web:

  

A menudo se llega a través de interfaces en Java que no tienen ningún comportamiento. En otras palabras, no son más que las definiciones de interfaz vacías. Estos son conocidos como interfaces de marcadores. Algunos ejemplos de interfaces de marcadores en la API de Java incluyen:

     

En el proyecto de trabajo en, hemos creado una interfaz llamada PublicCloneable, que contiene el método clone y especifica que es público.

Me parece una útil: el hecho de que hay un método clone, pero no se puede acceder a él no ayuda mucho

.
public interface PublicCloneable extends Cloneable {
    public Object clone();
}

Debido a que el método clone se implementa en la clase de objetos debido a su condición de "especial":. La copia de la memoria de objetos de cualquier clase

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top