`
dingyifan
  • 浏览: 2040 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Java Serializable 详解

阅读更多
package com.java.serializable;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;

/**
 * JAVA序列化详解
 * @author yfding
 *
 */
public class SerializableTest {
	public static void main(String[] args) {
		/**
		 * 基本概念
		 * 1.把对象转换成字节序列的过程称为对象的序列化
		 * 2.把字节序列转换成对象的过程称为对象的反序列化
		 * 
		 * 序列化的用途
		 * 1.把对象保存到硬盘上
		 * 2.网络传输中
		 * 
		 * 注意点
		 * 1.如果Student对象为实现Serializable接口,出现异常【java.io.NotSerializableException: com.java.serializable.Student】
		 * 2.serialVersionUID是java编译器运行时根据java类自动生成的,建议在序列化类对象时生成serialVersionUID
		 * 3.如果不生成serialVersionUID,当我们在类中新增方法,或者属性时,在反序列化时,java会重新生成一个新的serialVersionUID,导致之前序列化的文件不能被反序列化
		 * */
		
		// 序列化Student对象
		SerializableTest.SerializeStudent();
		
		// 反序列化Student对象
		SerializableTest.DeserializeStudent();
		
	}
	
	/** 序列化Student */
	private static void SerializeStudent(){
		Student student = new Student("yfding",18);
		try {
			ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(new File("C:/admin-pc/Student.txt")));
			oos.writeObject(student);
			oos.close();
		} catch (IOException e) {
			e.printStackTrace();
			System.out.println("序列化Student对象失败。");
			return;
		}
		System.out.println("序列化Student对象成功。");
	}
	
	private static void DeserializeStudent(){
		Student student = null;
		try {
			ObjectInputStream ois = new ObjectInputStream(new FileInputStream(new File("C:/admin-pc/Student.txt")));
			student = (Student) ois.readObject();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			System.out.println("反序列化Student对象失败。");
			return;
		} catch (ClassNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			System.out.println("反序列化Student对象失败。");
			return;
		}
		System.out.println("反序列化Student对象成功。Student-toString()----"+student.toString());
	}
}

class Student implements Serializable{
	private static final long serialVersionUID = -231956256888721831L;
	private String name;
	private int age;
	/*private int sex;
	
	public int getSex() {
		return sex;
	}
	public void setSex(int sex) {
		this.sex = sex;
	}*/
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
	public Student(String name, int age) {
		super();
		this.name = name;
		this.age = age;
	}
	@Override
	public String toString() {
		return "Student [name=" + name + ", age=" + age + "]";
	}
}


 

分享到:
评论

相关推荐

    Java对象Serializable接口实现详解

    Java对象Serializable接口实现详解 Java中的Serializable接口是java.io包中定义的,用于实现Java类的序列化操作而提供的一个语义级别的接口。Serializable序列化接口没有任何方法或者字段,只是用于标识可序列化的...

    java.io.Serializable序列化问题

    ### Java.io.Serializable 序列化问题详解 #### 一、序列化的概念与作用 在 Java 编程语言中,序列化是一种将对象的状态(即成员变量的值)转换为可以存储或传输的形式的过程。通常,这种形式是字节流,但也可以是...

    Java Serializable和Parcelable详解及实例代码

    `Serializable` 是Java标准库提供的一种简单的序列化方式,位于`java.io`包下。任何实现了`Serializable`接口的类,其对象都可以被序列化。实现这个接口不需要实现任何方法,只需要在类定义上添加`implements ...

    java中Serializable接口作用详解

    Java 中的 Serializable 接口作用详解 Java 中的 Serializable 接口是一个非常重要的接口,它允许对象被序列化,换句话说,就是将对象转换成字节序列,以便于存储或通过网络传输。Serializable 接口的作用主要体现...

    java序列化(Serializable)的作用和反序列化.doc

    ### Java序列化(Serializable)的作用与反序列化详解 #### 一、序列化的概念 序列化是指将程序中的对象转换为一系列字节流的过程,主要用于保存对象的状态或在网络之间传输对象。序列化的主要目的是为了能够持久化...

    java序列化(Serializable)的作用和反序列化

    ### Java序列化(Serializable)的作用与反序列化详解 #### 一、序列化是什么? 序列化是指将程序中的对象转换为字节流的过程,从而方便存储或传输这些对象。通常,序列化用于将对象的状态(即其实例变量的值,而非...

    Android Parcelable与Serializable详解及区别

    首先,`Serializable`接口是Java提供的标准序列化机制,它的主要作用是将对象的状态转换为字节流,便于存储到磁盘、网络传输或RMI(Remote Method Invocation)调用等。然而,`Serializable`的序列化和反序列化速度...

    java事务处理详解

    Java事务处理详解 Java事务处理是指在Java应用程序中对事务的管理和控制。事务是指一系列的操作,Either all succeed or all fail。Java事务处理的目的是为了确保数据的一致性和完整性。 Spring是Java事务处理的...

    孙卫琴 java网络编程详解源代码

    Java的`Serializable`接口和`ObjectOutputStream/ObjectInputStream`用于实现这一过程。 7. **NIO(非阻塞I/O)**:Java的`java.nio`包提供了非阻塞I/O的支持,这对于高并发和低延迟的网络应用特别有用。`Selector`...

    java StringBuffer详解

    `StringBuffer`是Java中处理字符串的类,它继承自`AbstractStringBuilder`并实现了`Serializable`和`CharSequence`接口。它的主要功能是在字符串操作(如拼接、插入、删除等)过程中提供高效且线程安全的操作。 2....

    Java序列化(Serializable)与反序列化_.docx

    ### Java序列化(Serializable)与反序列化详解 #### 序列化概念与应用场景 序列化是指将程序中的对象转换为一系列字节序列的过程,主要用于保存对象的状态以便将来使用或者在网络之间传输对象。Java提供了内置的...

    java jdk io包类详解

    ### Java JDK IO包类详解 #### 概述 Java平台提供的`io`包为开发者提供了访问文件系统、对象序列化等功能的基本输入输出能力。它主要包括字节流、字符流及对象流(字节流的包装类)。此外,还提供了一些基本的文件...

    TCP-JAVA网络编程(PPT)

    - **对象序列化**:Java的Serializable接口,允许对象转换为字节流进行网络传输。 6. **并发与多线程** - **并发处理**:在服务端,多线程用于处理多个客户端连接,提高服务器的并发能力。 - **线程安全**:在...

    java类中serialVersionUID详解.pdf

    ### Java 类中 `serialVersionUID` 详解 #### 一、`serialVersionUID` 概述 在 Java 中,`serialVersionUID` 是一个与类关联的长整型常量,用于支持序列化机制。当一个对象被序列化时,该对象所属类的 `...

    Java 对象序列化详解以及实例实现和源码下载

    Java中的序列化机制有两种实现方式: 一种是实现Serializable接口 另一种是实现Externalizable接口 区别: 实现Serializable接口 1 系统自动储存必要的信息 2 Java内建支持,易于实现,只需实现该接口即可,无须任何...

    Java enum的用法详解

    在Java编程语言中,`enum`(枚举)是一种特殊的类,用于定义一组固定的常量。这个特性在很多场合下非常有用,比如表示状态、角色、颜色等有限且不变的集合。本文将深入探讨Java `enum`的用法,包括其基本概念、创建...

    JAVA2SDK全部类库的详解

    ### JAVA2SDK全部类库详解 #### java.io 包概览 `java.io`包是Java标准库中非常重要的组成部分之一,它提供了大量的类和接口,用于处理输入/输出流、文件系统操作以及对象的序列化等。这些功能对于开发各种类型的...

    java Streams and Serialization 详解

    ### Java Streams 和 Serialization 详解 在Java编程语言中,数据的读取与写入操作是通过流(Streams)实现的。此外,为了保存对象的状态,Java提供了序列化(Serialization)机制。本文将深入探讨Java中的流操作...

    Java基础教程完整版

    本章节主要讲解Java的序列化机制,包括Serializable接口、Externalizable接口、transient关键字、serialVersionUID变量等。 Java学习系列(十三):Java面向对象之界面编程 本章节主要讲解Java的界面编程,包括AWT...

Global site tag (gtag.js) - Google Analytics