JAVA SE (14)
–> JAVA SE (13)
序列化
- 该类必须实现java.io.Serializable接口(序列化接口中没有方法和属性,仅用于表示可序列化)。
- 该类的所有属性必须是可序列化的。若有属性不是可序列化的,则该属性必须注明是短暂(transient)的。
序列化对象
ObjectOutputStream类用来序列化一个对象。
当序列化一个对象到文件时,按照java的标准约定是给文件一个.ser扩展名。
package binaryheap.test;import java.io.File;
import java.io.FileOutputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;public class BH{public static void main(String[] args) {Student student = new Student();student.address = "shenyang";student.age = 12;student.name = "TxL";student.number = 423;student.ssn = 123456;try {File file = new File("D:/serializable.ser");FileOutputStream fos = new FileOutputStream(file);ObjectOutputStream ooStream = new ObjectOutputStream(fos);ooStream.writeObject(student);ooStream.close();fos.close();} catch (Exception e) {e.printStackTrace();} }
}class Student implements Serializable{public String name;public String address;public int number;public int age;public transient int ssn;public void mail() {System.out.println("Mailing to " + name + " " + address);}
}
将对象序列化到了一个.ser文件中。
反序列化对象:
package binaryheap.test;import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;public class BH{public static void main(String[] args) throws IOException, ClassNotFoundException {Student s = null;try {FileInputStream fin = new FileInputStream("D:/serializable.ser");ObjectInputStream ois = new ObjectInputStream(fin);s = (Student)ois.readObject();ois.close();fin.close();} catch (FileNotFoundException e) {e.printStackTrace();}System.out.println("s.address: " + s.address);System.out.println("s.age: " + s.age);System.out.println("s.name: " + s.name);System.out.println("s.number: " + s.number);System.out.println("s.ssn: " + s.ssn);}
}class Student implements Serializable{public String name;public String address;public int number;public int age;public transient int ssn;public void mail() {System.out.println("Mailing to " + name + " " + address);}
}
结果
s.address: shenyang
s.age: 12
s.name: TxL
s.number: 423
s.ssn: 0
如果JVM在反序列化对象的过程中找不到该类,则抛出ClassNotFooundException异常。
注意:readObject返回的对象为Object类型,需要强制转换。transient修饰的值没有被发送到输出流。所以,反序列化后,为0。
JAVA SE (14)相关推荐
- Java安装与环境配置(Java SE 14)
Java(Java SE 14)安装与环境配置 前言 Java SE 14 下载 Java安装(新老版Java有区别,这里要看) Java配置 1.右击此电脑,打开属性.(不同的电脑,可能略有不同,可 ...
- java se 14 虚拟机规范
https://cr.openjdk.java.net/~iris/se/14/latestSpec/java-se-14-jvms-diffs.pdf 只有链接,pdf
- idea构建gradle项目报错Could not target platform: ‘Java SE 14‘ using tool chain: ‘JDK 8 (1.8)‘.
原因是以下两个配置不一致 build.gradle中的sourceCompatibility = '14' 如图 jdk版本改为一致即可
- 【JAVA SE】第一章 Java语言概述、环境变量和HelloWorld
第一章 Java语言概述.环境变量和HelloWorld 文章目录 第一章 Java语言概述.环境变量和HelloWorld 一.Java语言概述 1.Java简介 2.Java发展历史 3.Java ...
- Java 版本变更列表 (Java SE 8 ~ Java SE 18 )
java 版本变更列表 Java SE 8 Java SE 9 Java SE 10 Java SE 11 Java SE 12 Java SE 13 Java SE 14 Java SE 15 Ja ...
- 零基础学JAVA]Java SE基础部分-01. Java发展及JDK配置
1.课程名称:Java发展及JDK配置 本季介绍了JAVA的发展过程,包括JDK的发展历程,path路径的配置和classpath的配置及作用.并简单讲解了一个简单的JAVA程序,并通过此程序讲解了J ...
- java se翻译_(翻译)Java SE 8 Lambda 标准库概览(下)
Java SE 8 Lambda 标准库概览 8,Collectors 在目前的例子中,我们已经使用了collect()方法来收集流中的元素并放入List或Set中了.collec()方法的参数是一个 ...
- Java SE 6 新特性 Instrumentation 新功能
系列内容: 此内容是该系列的一部分:Java SE 6 新特性 Instrumentation 简介 利用 Java 代码,即 java.lang.instrument 做动态 Instrumenta ...
- Java SE 11(18.9)中的API更新
Java SE 11也被命名为18.9(基于使用发布年份和月份的新命名方案),预计将在9月的最后一周发布GA. 频繁发布新JDK版本的新方法是允许语言创建者引入新功能,并向开发人员社区更快地进行API ...
最新文章
- Shell脚本入门基础
- 使用fastcoll进行md5碰撞,两个不同的文件md5值一样。
- vue3源码中的最长递增子序列
- JDE Client开发端 左侧边栏设置
- php实现注册登陆验证
- js字符串转数字(小数),数字转字符串
- meteor 结合mysql_Meteor集合
- Is It A Tree?(hdu1325)
- 关于selenium关闭chrome密码登录时弹出的密码提示框
- Akka向设备组添加Actor注册《thirteen》译
- oracle odi 目标数据存储: 临时目标数据存储未与连接关联,ODI知识模块--IKM Oracle Incremental Update...
- 10款最赞的ROS机器人操作系统课程+为何ROS不是必须的
- 《Spring Cloud微服务实战》翟永超(著)
- 程序员:新手到专家的5个阶段
- 数据分析基础学习_Matplotlib_常见图形及绘制(折线图/散点图/柱状图/直方图/饼图)
- ABP框架系列之三十:(Javascript-API-Javascript-API)
- c语言如何解超越方程
- javascript数组 去重
- windows窗口置顶--Windows on Top
- Codeforces Raif Round 1 (Div. 1 + Div. 2) E. Carrots for Rabbits(贪心)
热门文章
- 防老人走失新方法:衣服上缝二维码 走失可扫码回家
- Data Mining Machine Learning学习笔记 机器学习入门笔记 之jieba分词(中文分词)(二)
- VB .bas文件生成dll并且调用
- 【C语言】练习函数调用
- U-Boot命令使用
- Java 连接数据库的几种方法
- 堪称「神器」的电脑软件
- Unreal Engin_画廊制作笔记 _010给墙画添加灯光
- 微信公众平台支付 一直提示签名认证失败,签名对比正确,却提示签名不正确,关于prepay_id造成签名验证不正确的问题
- 第15课:生活中的命令模式——大闸蟹,走起