JAVA--Object(对象序列化)

2023-10-30

(一)定义

把一个Object对象直接转化为字节流,让后把字节流直接写入本地硬盘或者网络中;

如果需要对某个对象实现序列化,必须实现Serializable接口;(Serialzable为空接口,起标识作用)

transient修饰的成员无法被序列化;

public class TestObjectIO
{
	public static void main(String[] args)
	{
		ObjectOutputStream oos = null;
		ObjectInputStream ois = null; 
		Student ss = new Student("zhansan", 1000, 88.8f);  //注意88.8f不能改为88.8 
		Student ss2 = null;	
				
		try
		{
			FileOutputStream fos = new FileOutputStream("d:/share/java/ObjectOut.txt");
			oos = new ObjectOutputStream(fos);
			oos.writeObject(ss);
			
			ois = new ObjectInputStream(new FileInputStream("d:/share/java/ObjectOut.txt"));	
			ss2 = (Student)ois.readObject();  //(Student)不能省   ois.readObject();如果ois中的某个成员是transient,则该成员是不会被读取的,因为该成员不会被保存,何来读取之说?!
			
			System.out.println("ss2.sname = " + ss2.sname);
			System.out.println("ss2.sid = " + ss2.sid);
			System.out.println("ss2.sscore = " + ss2.sscore);
		}
		catch (FileNotFoundException e)
		{
			System.out.println("文件没有找到!");
			System.exit(-1);
		}
		catch (Exception e)
		{
			e.printStackTrace();
			System.exit(-1);
		}
		finally
		{
			try
			{
				oos.close();
				ois.close();
			}
			catch (Exception e)
			{
				e.printStackTrace();
				System.exit(-1);
			}
		}		
	}
}

class Student implements Serializable  //如果将implements Serializable 注释掉,则程序编译时就会报错
{
	public String sname = null;
	public int sid = 0;
	transient public float sscore = 0; //表示sscore成员不能被序列化,所谓不能被序列化就是指:“该成员调用ObjectOutputStream 的writeOnbject()时不会被保存,调用ObjectInputStream的readObject()方法时不会被读取”
	
	public Student(String name, int id, float score)
	{
		this.sname = name;
		this.sid = id;
		this.sscore =  score;
	}
}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

JAVA--Object(对象序列化) 的相关文章

  • Java:迭代 Collection 的最佳方法(此处为 ArrayList)

    今天 当我看到一段我已经使用了数百次的代码时 我很高兴地开始编码 迭代集合 此处为 ArrayList 出于某种原因 我实际上查看了 Eclipse 的自动完成选项 这让我想知道 在什么情况下以下循环比其他循环更好使用 经典的数组索引循环
  • Java:如何从转义的 URL 获取文件?

    我收到了一个定位本地文件的 URL 事实上我收到的 URL 不在我的控制范围内 URL 按照 RFC2396 中的定义进行有效转义 如何将其转换为 Java File 对象 有趣的是 URL getFile 方法返回一个字符串 而不是文件
  • OpenCV 中的 Gabor 内核参数

    我必须在我的应用程序中使用 Gabor 过滤器 但我不知道这个 OpenCV 方法参数值 我想对虹膜进行编码 启动 Gabor 过滤器并获取特征 我想对 12 组 Gabor 参数值执行此操作 然后我想计算 Hamming Dystans
  • java中如何连接字符串

    这是我的字符串连接代码 StringSecret java public class StringSecret public static void main String args String s new String abc s co
  • 当从服务类中调用时,Spring @Transactional 不适用于带注释的方法

    在下面的代码中 当方法内部 是从内部调用的方法外部 应该在交易范围内 但事实并非如此 但当方法内部 直接从调用我的控制器class 它受到事务的约束 有什么解释吗 这是控制器类 Controller public class MyContr
  • hibernate锁等待超时超时;

    我正在使用 Hibernate 尝试模拟对数据库中同一行的 2 个并发更新 编辑 我将 em1 getTransaction commit 移至 em1 flush 之后我没有收到任何 StaleObjectException 两个事务已成
  • 匿名类上的 NotSerializedException

    我有一个用于过滤项目的界面 public interface KeyValFilter extends Serializable public static final long serialVersionUID 7069537470113
  • Java 8 流 - 合并共享相同 ID 的对象集合

    我有一系列发票 class Invoice int month BigDecimal amount 我想合并这些发票 这样我每个月都会收到一张发票 金额是本月发票金额的总和 例如 invoice 1 month 1 amount 1000
  • 在游戏视图下添加 admob

    我一直试图将 admob 放在我的游戏视图下 这是我的代码 public class HoodStarGame extends AndroidApplication Override public void onCreate Bundle
  • react-native run-android 失败并出现错误:任务 ':app:dexDebug' 执行失败

    我使用的是 Windows 8 1 和react native cli 1 0 0 and react native 0 31 0 添加后react native maps对于该项目 我运行了命令react native upgrade并给
  • 如何在selenium服务器上提供自定义功能?

    我知道可以通过某种方法获得一些硒功能 其中之一如下 driver getCapabilities getBrowserName 它返回浏览器名称的值 但如果它指的是一个可用的方法 如果我没有误解的话 这似乎与自定义功能有关 就像我的意思是
  • IntelliJ - 调试模式 - 在程序内存中搜索文本

    我正在与无证的第三方库合作 我知道有一定的String存储在库深处的某个字段中的某处 我可以预测的动态值 但我想从库的 API 中获取它 有没有一种方法可以通过以下方式进行搜索 类似于全文搜索 full程序内存处于调试模式并在某个断点处停止
  • 如何知道抛出了哪个异常

    我正在对我们的代码库进行审查 有很多这样的陈述 try doSomething catch Exception e 但我想要一种方法来知道 doSomething 抛出了哪个异常 在 doSomething 的实现中没有 throw 语句
  • Struts 2 + Sitemesh 3 集成 - FreemarkerDecoratorServlet 中的 NPE

    我将 Struts 2 版本 2 3 14 3 与 Sitemesh 3 版本 3 0 alpha 2 一起使用 并且在某些情况下遇到 NullPointerException 首先 这是我的 web xml 中的 struts2 site
  • 测试弱引用

    在 Java 中测试弱引用的正确方法是什么 我最初的想法是执行以下操作 public class WeakReferenceTest public class Target private String value public Targe
  • 游戏内的java.awt.Robot?

    我正在尝试使用下面的代码来模拟击键 当我打开记事本时 它工作正常 但当我打开我想使用它的游戏时 它没有执行任何操作 所以按键似乎不起作用 我尝试模拟鼠标移动和点击 这些动作确实有效 有谁知道如何解决这个问题 我发现这个问题 如何在游戏中使用
  • 替换后增量

    我自己已经有一个问题了 但我想扩展它后增量示例 https stackoverflow com questions 51308967 post increment with example char a D int b 5 System o
  • HQL Hibernate 内连接

    我怎样才能在 Hibernate 中编写这个 SQL 查询 我想使用 Hibernate 来创建查询 而不是创建数据库 SELECT FROM Employee e INNER JOIN Team t ON e Id team t Id t
  • 如何使用 JSch 将多行命令输出存储到变量中

    所以 我有一段很好的代码 我很难理解 它允许我向我的服务器发送命令 并获得一行响应 该代码有效 但我想从服务器返回多行 主要类是 JSch jSch new JSch MyUserInfo ui new MyUserInfo String
  • 在 RESTful Web 服务中实现注销

    我正在开发一个需要注销服务的移动应用程序 登录服务是通过数据库验证来完成的 现在我陷入了注销状态 退一步 您没有提供有关如何在应用程序中执行身份验证的详细信息 并且很难猜测您在做什么 但是 需要注意的是 在 REST 应用程序中 不能有会话

随机推荐

  • android中服务的生命周期示例

    如何在android中建立一个服务 使用androidstudio新建一个继承自Service的MyService类 并在Android manifest xml文件中注册 在MyService类中需要实现onBind这个类 但是启动一个服
  • 如何更改vue项目窗口的标题title和图标icon

    Vue CLI创建的项目窗口的标题默认是打包后的项目名称 默认图标是Vue的图标favicon ico 解决方法 修改图标 直接将新图标导入public文件夹 然后将favicon ico替换为新图标的名字即可 此处可以不用ico文件 但是
  • 重排序架构行人重识别代码复现

    参考教程 https blog csdn net Layumi1993 article details 84849506 https zhuanlan zhihu com p 50387521 一 需要安装的软件包 1 Python 3 6
  • 看门狗电路 通俗理解

    视频讲解 李想STM32初级教程 哔哩哔哩 bilibili 看门狗通俗理解 转自 STC89C5X单片机 看门狗 原理详解 电子工程世界 很多人初次接触不太理解怎么用 书上也讲的含含糊糊 故意说的很复杂很玄妙 可能是现在写书人的通病 生怕
  • MindManager2022Mac版本支持导入XMind、FreeMind文件格式

    Mindjet MindManager 2022 Win macOS版 思维导图软件 由coco玛吉多整理 MindManager 是一个强大的思维导图软件 它可以让你定制 发现隐藏的潜力 与人合并信息 释放生产力 更快地完成好工作 它作为
  • Spring的控制反转与依赖注入

    学习过Spring的都知道Spring有三大核心的概念 分别是控制反转 IOC 依赖注入 DI 和面向切面编程 AOP 今天就来聊聊我对控制反转和依赖注入的了解 至于面向切面编程放到后面讲解 一 控制反转 Ioc 控制反转 Inversio
  • 分别用Eigen和C++(OpenCV)实现图像(矩阵)转置

    1 标量 scalar 一个标量就是一个单独的数 2 向量 vector 一个向量是一列数 这些数是有序排列的 通过次序中的索引 可以确定每个单独的数 3 矩阵 matrix 矩阵是一个二维数组 其中的每一个元素被两个索引而非一个所确定 4
  • statmodels库分解时间序列(趋势、周期性、季节性、残差)

    import pandas as pd import matplotlib pyplot as plt from statsmodels tsa seasonal import STL df pd read csv time series
  • em算法长文

    https blog csdn net u010834867 article details 90762296 em算法长文 mark
  • 如何在VSCode配置PHP开发环境(详细版)

    这篇博文是当初笔者上课需要配置XAMPP 整理出来配置方法 错漏之处没有认真核对 给造成麻烦的同学道个歉 以下有两场修正之处 第一处 XAMPP国内下载地址改成了XAMPP中文网最新版本下载链接 给之前误下p2p的同学再次道个歉 第二处 下
  • px、em、rem

    px em rem简介 px像素 Pixel 相对长度单位 相对于显示屏幕分辨率 em 相对长度单位 相对于父元素设置的font size 页面层级越深 em的换算就越复杂 rem 相对长度单位 相对于HTML根元素设置的font size
  • 重装系统(安装版)——磁盘分区——Windows启动过程——\\.\PhysicalDrive1的操作失败

    搜罗整理自csdn博客 百度百科 远景论坛 无忧论坛等 1 PhysicalDrive1的操作失败 这是由于U盘既作磁盘 添加磁盘时使用U盘作为磁盘即PhysicalDrive1 又作USB连接设备即真正的U盘 当虚拟机启动时 就会检测到这
  • [Python从零到壹] 四十七.图像增强及运算篇之腐蚀和膨胀详解

    欢迎大家来到 Python从零到壹 在这里我将分享约200篇Python系列文章 带大家一起去学习和玩耍 看看Python这个有趣的世界 所有文章都将结合案例 代码和作者的经验讲解 真心想把自己近十年的编程经验分享给大家 希望对您有所帮助
  • bootstraptable 删除指定多行_Python Pandas处理Excel多列到多行转换

    Excel能够实现的功能 目前Pandas都能够实现 倘若你已经能够熟练运用Pandas的 宽转长 wide to long 和透视表pivot table 函数 建议您直接跳过本文 需求说明 需求是将材料变更的多列记录数据转成多行 演示数
  • C++复习笔记--STL的基本概念和使用

    目录 1 STL基本概念 2 STL六大组件 2 1 容器的基本概念 2 2 算法的基本概念 2 3 迭代器的基本概念 3 代码实例 3 1 vector容器的使用 3 2 使用vector容器存储自定义类型 3 3 容器嵌套容器 1 ST
  • Angular4--【数据绑定】

    数据绑定 事件绑定 属性绑定 很多人对于DOM属性还是HTML属性易混 那我们首先来区分一下HTML和DOM 少量的HTML和DOM属性之前存在着1 1的映射 比如id 有些HTML属性没有对应的DOM属性 有些DOM属性没有对应的HTML
  • 10年测试专家深度解读接口测试

    01 对于接口测试来说 项目测试用例的重复运行首先是表现在单个测试用例的独立性方面的 也就是说 每一个测试用例的运行除了依赖被测对象和对应的数据库环境外 是不依赖于其他任何测试用例的 并且这个测试用例执行完毕后 对系统来说 也是没有任何痕迹
  • Linux查看端口占用情况的几种方式

    Linux查看端口占用情况的几种方式 概述 测试环境为Centos7 9 本文简单给出了几种检测端口的例子 一 查看本机端口占用 1 netstat 安装netstat yum y install net tools 检测端口占用 nets
  • /proc/sys/kernel/printk 打印log设置

    proc sys kernel printk Printk 共有4个参数 Cat proc sys kernel printk 7 4 1 7 1 第一个参数 7表示小于7优先级消息才会被输出到控制台 2 第二个参数4 表示默认的print
  • JAVA--Object(对象序列化)

    一 定义 把一个Object对象直接转化为字节流 让后把字节流直接写入本地硬盘或者网络中 如果需要对某个对象实现序列化 必须实现Serializable接口 Serialzable为空接口 起标识作用 transient修饰的成员无法被序列