El propósito de la serialización: para poder guardar el objeto
La esencia de la serialización:
1. Crear un FIleOutputStream
FileOutputStream fileStream = new FileOutputStream("MyGame.ser");//FileOutputStream有写字节的方法,可以写入文件
2. Crear un ObjectOutputStream
ObjectOutputStream os = new ObjectOutputStream(fileStream);//但我们一般不直接写字节,会先用 ObjectOutputStream 来把对象打包,再写入文件
3. Llame al método writeObject para empaquetar y escribir el archivo
os.writeObject(characterOne);
os.writeObject(characterTwo);
os.writeObject(characterThree);
4. Cierre ObjectOutputStream
os.close();
Condiciones bajo las cuales se puede serializar una clase:
Implemente la interfaz serializable, que también se denomina interfaz de marca de clase de creador o etiqueta, porque esta interfaz no tiene métodos para implementar. Su único propósito es declarar que la clase que implementa esta interfaz puede ser serializada. Esto significa que los objetos de este tipo se pueden almacenar a través de la serialización. Si una clase es serializable, sus subclases también se pueden serializar automáticamente.
¿Qué salvó realmente el objeto al serializar el objeto?
Respuesta: El estado del objeto es el valor de la variable de instancia. Son estos valores los que hacen que diferentes instancias de la misma clase tengan significados diferentes.
Nota: La serialización debe ser todo o nada, es decir, todas las variables de serialización dentro de la clase deben ser serializadas. Si una variable de instancia no puede o no debe ser serializada, márquela como transitoria;
Deserialización: Restaurar archivos a objetos vivos.
1. Crear FileInputStream
FileInputStream fileStream = new FIleInputStream(MyGame.ser);
2. Crear ObjectInputStream
ObjectInputStream os = new ObjectInputStream(fileStream);
3. Lee el objeto
Object one = new os.readObject();
Object two = new os.readObject();
Object three = new os.readObject();
4. Convertir tipos de objetos
GameCharacter elf = (GameCharacter)one;//返回的Object类型,必须转换类型
GameCharacter troll = (GameCharacter)two;
GameCharacter mag = (GameCharacter) three;
5. Cierre ObjectInputStream
os.close();//FileInputStream会跟着关掉
Almacena y restaura el código de personaje del juego
没找见代码,可能删了,抱歉!