首页 > 编程语言 >Java对象流

Java对象流

时间:2024-08-04 14:58:19浏览次数:14  
标签:java ObjectInputStream 对象 io import Java 序列化

对象流

对象输入流

java.io.ObjectInputStream使用对象流可以进行对象反序列化

构造器
ObjectInputStream(InputStream in)
将当前创建的对象输入流链接在指定的输入流上   
方法
Object readObject()
进行对象反序列化并返回。该方法会从当前对象输入流链接的流中读取若干字节并将其还原为对象。这里要注意读取的字节必须是由ObjectOutputStream序列化一个对象所得到的字节。
package io;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.ObjectInputStream;

/**
 * 对象输入流,用来进行对象反序列化
 */
public class OISDemo {
    public static void main(String[] args) throws IOException, ClassNotFoundException {
        //读取person.obj文件并将其中保存的数据进行反序列化
        FileInputStream fis = new FileInputStream("person.obj");
        ObjectInputStream ois = new ObjectInputStream(fis);

        Person person = (Person)ois.readObject();
        System.out.println(person);

        ois.close();
    }
}

transient关键字

当一个属性被transient关键字修饰后,该对象在进行序列化时,转换出来的字节中是不包含该属性的。忽略不必要的属性可以达到对象"瘦身"的操作。

对象瘦身可以在对象持久化时减少磁盘开销。在进行传输时可以缩短传输速度。

如果该对象不需要序列化,那么该关键字不发挥其他任何效果

在这里插入图片描述

序列化时不包含otherInfo属性,并且反序列化时该属性值为null

在这里插入图片描述

标签:java,ObjectInputStream,对象,io,import,Java,序列化
From: https://blog.csdn.net/weixin_68522070/article/details/140863258

相关文章

  • JavaScript Proxy() 构造函数、Proxy对象
    Proxy()构造函数Proxy()构造函数用于创建Proxy对象。语法newProxy(target,handler)可以使用Proxy()构造函数来创建一个新的Proxy对象。构造函数接收两个必须的参数:target是要创建的对象,即要使用Proxy包装的目标对象(可以是任何类型的对象,包括原生数组,函数......
  • Java - 异常与File
    异常灵魂四问:如果try中没有遇到问题,怎么执行?try全部执行,catch不执行如果try中可能会遇到多个问题,怎么执行?写多个catch与之对应,父类异常需要写在下面如果try中遇到的问题没有被捕获,怎么执行?异常会默认交给虚拟机处理,try...catch白写如果try中遇到了问题,那......
  • 【Java】包装类型变量的形参传递,方法内修改后,方法外还是原值?
    背景前几天有个朋友写代码时,想把int变量作为形参传入方法中进行修改后,在方法外能够获取到修改后的变量进行下一步操作。类似这样:classTest{publicstaticvoidmain(String[]args){intx=1;add(x);System.out.println(x);}pub......
  • PYTHON专题-(4)python叫你搞对象
    什么是面向过程编程?面向过程的程序设计把计算机程序视为一系列的命令集合,即一组函数的顺序执行。为了简化程序设计,面向过程把函数继续切分为子函数,即把大块函数通过切割成小块函数来降低系统的复杂度。什么是面向对象编程?面向对象编程——ObjectOrientedProgramming,简......
  • java学习进程五
    本周所做的内容这一周我主要集中在以下几个方面的学习:基本数据类型与运算符:我复习了Java的基本数据类型(如int、double、char、boolean)和运算符(如算术运算符、关系运算符、逻辑运算符)。控制流语句:我学习了Java的控制流语句,包括条件语句(if-else、switch-case)和循环语句(for......
  • 学Java的第五周(跳转语句和类与对象)
    循环在执行过程中,只有在循环条件不成立的情况下,才可以退出循环的执行。例如,沿着运动场跑5圈,可以将该过程视为一个循环,只有在跑完5圈之后才可以终止循环。但在实际情况中,由于个人的身体素质等问题,会出现未完成任务的情况,就需要终止循环。在程序执行过程中同样如此,有时需要根据需求......
  • C# & Unity 面向对象补全计划 七大原则 之 里氏替换
    本文仅作学习笔记与交流,不作任何商业用途,作者能力有限,如有不足还请斧正本系列作为七大原则和设计模式的进阶知识,看不懂没关系请看专栏:http://t.csdnimg.cn/mIitr,尤其是关于继承的两篇文章,本知识点与其密切相关1.里氏替换原则里氏替换原则(LiskovSubstitutionPrinciple,LS......
  • 学Java的第四周
    for循环的执行结果如下:(1)先初始化变量i(inti=1)。(2)然后判断循环条件(i<=100)。(3)如果条件为true,则执行循环体进行累加求和(sum+=i),然后继续执行迭代部分,改变循环变量的值(i++),然后继续判断表达式2,这样就在判断、循环体与迭代部分之间形成循环,直至判断表达式2......
  • 暑假自学Java进度总结04
    一.今日所学:1.下载并使用idea开发工具1>了解idea的发展历史2>尝试用idea编写代码3>学习idea中的项目和模块操作2.学习赋值运算符加后赋值:“+=”减后赋值:“-=”乘后赋值:“*=“除后赋值:“/=”取余后赋值:“%=”3.学习关系运算符1>等于:“==”2>大于:“>”3>小于:“<”4>......
  • Java基础语法之控制流
    在上一篇文章中,我们介绍了Java基础语法之运算符和表达式(Java基础语法之运算符和表达式),在Java编程中,控制流结构决定了程序的执行顺序。通过使用不同的控制流语句,可以实现条件判断、循环执行和跳转操作。文章目录1.控制流结构类型条件语句循环语句跳转语句2.知识结构图......