En una clase que implementa a 

Serializable

, el programador debe asegurar que cada variable de instancia 

de la clase sea de un tipo 

Serializable

. Cualquier variable de instancia que no sea serializable debe declararse 

como 

transient

, para indicar que no es 

Serializable

 y debe ignorarse durante el proceso de serialización. De 

manera predeterminada, todas las variables de tipos primitivos son serializables. Para las variables de tipos de refe-
rencias, debe comprobar la defi nición de la clase (y posiblemente de sus superclases) para asegurar que el tipo sea 

Serializable

. De manera predeterminada, los objetos tipo arreglo son serializables. No obstante, si el arreglo 

contiene referencias a otros objetos, éstos pueden o no ser serializables.

La clase 

RegistroCuentaSerializable

 contiene los miembros de datos 

private

 llamados 

cuenta

pri-

merNombre

apellidoPaterno

 y 

saldo

. Esta clase también proporciona métodos 

public

 

establecer y obtener 

para acceder a los campos 

private

.

Ahora hablaremos sobre el código que crea el archivo de acceso secuencial (fi guras 14.18 y 14.19). Aquí nos 

concentraremos sólo en los nuevos conceptos. Como dijimos en la sección 14.3, un programa puede abrir un
archivo creando un objeto de las clases de fl ujo 

FileInputStream

 o 

FileOuptutStream

. En este ejemplo,

el archivo se abrirá en modo de salida, por lo que el programa crea un objeto 

FileOutputStream

(línea 21 de la 

fi gura 14.18). El argumento de cadena que se pasa al constructor de 

FileOutputStream

representa el nombre y

la ruta del archivo que se va a abrir. Los archivos existentes que se abren en modo de salida de esta forma se trun-
can. Observe que se utiliza la extensión de archivo 

.ser

; utilizamos esta extensión de archivo para los archivos 

binarios que contienen objetos serializados.

 70  

}

// fin del método establecerSaldo

71

 72  

// obtiene el saldo

73

public double

 obtenerSaldo() 

 74  

{

 75  

 

return

 saldo; 

 76  

}

// fin del método obtenerSaldo

77

}

 // fin de la clase RegistroCuentaSerializable

Figura 14.17

  |  La clase 

RegistroCuentaSerializable

 para los objetos serializables. (Parte 3 de 3).

 1 

// Fig. 14.18: CrearArchivoSecuencial.java

2

// Escritura de objetos en forma secuencial a un archivo, con la clase ObjectOutputStream.

3

import

 java.io.FileOutputStream;

 4 

import

 java.io.IOException;

 5 

import

 java.io.ObjectOutputStream;

 6 

import

 java.util.NoSuchElementException;

 7 

import

 java.util.Scanner;

 8
 9 

import

 com.deitel.jhtp7.cap14.RegistroCuentaSerializable;

 10 
 11 

public class

 CrearArchivoSecuencial

 12 

{

 13  

private

 ObjectOutputStream salida; 

// envía los datos a un archivo

14

 15  

// permite al usuario especificar el nombre del archivo

16

public void

 abrirArchivo()

 17  

{

 18  

 

try

// abre el archivo

19   

{

 

20    

salida = 

new

 ObjectOutputStream(

 21 

 

 

 

      

new

 FileOutputStream( 

"clientes.ser"

 ) );

 22  

 

}

// fin de try

23   

catch

 ( IOException ioException )

Figura 14.18 

 |  Archivo secuencial creado mediante 

ObjectOutputStream

. (Parte 1 de 3).

14.6 Serialización de objetos 

633

14_MAQ_CAP_14_DEITEL.indd633

4/19/081:28:20AM