Ya sabemos que si dos objetos de una clase tienen la misma referencia, entonces tienen las mismas entidades y funciones, como por ejemplo:
Auno=nuevoA();Ados=uno;
Suponga que la clase A tiene una variable miembro int llamada x. Luego, si realiza las siguientes operaciones:
dos.x=100;
Entonces el valor de one.x también será 100.
Para otro ejemplo, el parámetro de un determinado método es de tipo Personas:
publicvoidf(Personasp){px=200;}
Si al llamar a este método, se pasa una referencia a un objeto de Personas, como zhang, al parámetro P, entonces el valor de zhang.x también será 200 después de ejecutar el método.
A veces desea obtener una "copia" de un objeto. Los cambios en la entidad de copia no provocarán cambios en la entidad del objeto original y viceversa. Esta copia se denomina objeto clonado del objeto original o simplemente clon .
Es fácil obtener un clon de un objeto serializado utilizando secuencias de objetos. Simplemente escriba el objeto en el destino señalado por la secuencia de salida del objeto y luego use ese destino como fuente de una secuencia de entrada de objetos, que luego lee desde la fuente. El objeto devuelto debe ser un clon del objeto original, es decir, el flujo de entrada del objeto obtiene un clon del objeto actual a través de la información de serialización del objeto. Por ejemplo, el objeto xinfei del ejemplo de la sección anterior es un clon del objeto changhong.
Cuando un programa quiere obtener un clon de un objeto más rápido, puede usar una secuencia de objetos para escribir la información de serialización del objeto en la memoria en lugar de escribirla en un archivo en el disco. La secuencia de objetos utiliza una secuencia de matriz como secuencia subyacente para escribir la información de serialización del objeto en la memoria. Por ejemplo, podemos tomar el ejemplo de la sección anterior.
FileOutputStreamfileOut=newFileOutputStream(archivo);ObjectOutputStreamobjectOut=newObjectOutputStream(archivoOut);
y
FileInputStreamfileIn=newFileInputStream(archivo);ObjectInputStreamobjectIn=newObjectInputStream(archivoIn);
Cambiar a:
ByteArrayOutputStreamoutByte=newByteArrayOutputStream();ObjectOutputStreamobjectOut=newObjectOutputStream(outByte);
y
ByteArrayInputStreaminByte=newByteArrayInputStream(outByte.toByteArray());ObjectInputStreamobjectIn=newObjectInputStream(inByte);
La clase Componente en el paquete java.awt es una clase que implementa la interfaz Serializable. El componente es un objeto serializado . Por lo tanto, el programa puede escribir el componente en el flujo de salida y luego usar el flujo de entrada para leer un clon . componente.