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