Java创建对象的方式——反序列化创建对象

目录

    • Java创建对象的几种方式
    • 反序列化创建对象
      • 思路
      • 代码示例

Java创建对象的几种方式

Java创建对象的方式共有4种。分别为:
1、通过new语句实例化一个对象。
2、通过反射机制创建对象。
3、通过clone()方法创建一个对象。
4、通过反序列化的方式创建对象。
思考:反序列化是怎么创建对象的呢?

反序列化创建对象

思路

反序列化创建对象的过程,需要将流转换为对象。那么,可以通过序列化,将对象的状态写在流里面,根据需要把该流读取出来重新构造一个相同的对象。

代码示例

首先创建一个Car类实现Serializable接口,因为所有要实现序列化的类都必须实现Serializable接口。

package test.fanxuliehua;import java.io.Serializable;public class Car implements Serializable {private int height;private String color;public Car(int height, String color) {this.height = height;this.color = color;}@Overridepublic String toString() {return "Car{" +"height=" + height +", color='" + color + '\'' +'}';}
}

1、通过序列化,将对象的状态写在流里面:
先构造一个对象流ObjectOutputStream oss,使用oos的writeObject的方法将实例对象car1的状态写到流(字节流文件car1.ser)里面。
2、根据需要把该流读取出来重新构造一个相同的对象:
先构造一个对象流ObjectInputStream ois读取字节流文件car1.ser,使用ois的readObject的方法重新构造一个相同的对象car2。

package test.fanxuliehua;import java.io.*;public class Test {public static void main(String[] args) throws IOException, ClassNotFoundException {//序列化过程ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("car1.ser"));Car car1 = new Car(175, "白色");oos.writeObject(car1);oos.close();//反序列化过程ObjectInputStream ois = new ObjectInputStream(new FileInputStream("car1.ser"));Car car2 = (Car) ois.readObject();System.out.println("car2:" + car2);ois.close();}
}

3、执行结果:

car2:Car{height=175, color='白色'}

打印结果表明反序列化创建car2成功,且属性值与car1一致。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/549189.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

redis知识归纳

目录Redis有哪些数据结构?有大量key需要设置同一时间过期,需要注意什么?Redis分布式锁怎么回事?假设Redis里有1亿个key,其中有10万个key是以同一个固定前缀开头,如何将它们全部找出?如何用Redis…

PCI_Express规范第七章解读-Software Initialization and configuration

7.Software Initialization and configuration PCI EXPRESS Configuration model 支持两种配置空间的访问机制: -PCI 兼容配置机制:100%的二进制兼容PCI 2.3中定义的,以及兼容早期的OS或类似的总线枚举和配置软件。 -PCI Express增强配置机制…

List「Object[]」转Map「Integer,String」处理

题目 有一个List<Object[]>&#xff0c;里面的元素分别是[1,“a”]&#xff0c;[2,“b”]&#xff0c;[1,“c”]&#xff0c;[2,“d”]…&#xff0c;请写一个函数将其转换为一个Map<Integer,String>&#xff0c;以List的Object[]第一个元素为关键字&#xff0c;将…

Asp.net基础概念之 事件

.NET Framework中的事件 事件体系结构 引发事件的对象叫做事件源。事件源发布它可以引发的事件。事件的类型总是委托类型&#xff0c;这个委托类型的签名定义了处理该事件的方法的签名。定义事件处理程序方法的对象称为事件接收方。事件接收方预订要在事件源上处理的事件事件接…

synchronized同步方法概述

synchronized同步方法 1、“线程安全”与“非线程安全”&#xff1a; 非线程安全情况&#xff1a;多个线程对同一个对象中的实例变量进行并发访问时&#xff0c;产生脏读。 解决方法&#xff1a;对实例变量的值进行同步处理。 2、方法内的变量为线程安全 3、实例变量非线程安…

as3:sprite作为容器使用时,最好不要指定width,height

官方解释&#xff1a; 除 TextField 和 Video 对象以外&#xff0c;没有内容的显示对象&#xff08;如一个空的 Sprite&#xff09;的高度为 0&#xff0c;即使您尝试将 height 设置为其它值&#xff0c;也是这样。 如果您设置了 height 属性&#xff0c;则 scaleY 属性会相应调…

1002 写出这个数 (20分)-Java

题目 读入一个正整数 n&#xff0c;计算其各位数字之和&#xff0c;用汉语拼音写出和的每一位数字。 输入格式&#xff1a; 每个测试输入包含 1 个测试用例&#xff0c;即给出自然数 n 的值。这里保证 n 小于 10 ​100。 输出格式&#xff1a; 在一行内输出 n 的各位数字之和…

成为LINUX系统管理员几点规则

要成为一名合格的LINUX管理员&#xff0c;一般来说都要懂得如下几点规则&#xff1a; 规则1&#xff1a;了解LINUX的一切。首先&#xff0c;在了解以下规则之前&#xff0c;笔者必须向大家说明的是&#xff0c;即使最基本的LINUX系统管理员都是要经过不断的学习和长时间实践才能…

Facebook图片存储架构技术全解析

Haystack提出了一种通用的基于HTTP的对象存储&#xff0c;它含有指针&#xff0c;映射到存储对象。在Haystack中以指针储存照片&#xff0c;把数以十万计的图像聚集到一个Haystack存储文件&#xff0c;从而消除了元数据负荷。这就使得元数据的开销非常小&#xff0c;并且使我们…

Shiro授权流程图

Shiro授权流程Shiro授权流程图Shiro授权流程图 根据Shiro授权流程&#xff0c;绘制流程图如下&#xff1a;

assert

[编辑本段]概述  Assert - 断言 编写代码时&#xff0c;我们总是会做出一些假设&#xff0c;断言就是用于在代码中捕捉这些假设&#xff0c;可以将断言看作是异常处理的一种高级形式。断言表示为一些布尔表达式&#xff0c;程序员相信在程序中的某个特定点该表达式值为真。可…

Shiro并发登录人数控制遇到的问题和解决

shiro并发登录人数控制遇到的问题和解决问题1:KickoutSessionControlFilter不起作用问题2:KickoutSessionControlFilter中cache为null空指针异常问题3:服务器重启后首页访问&#xff1a;subject.getPrincipal()报ClassCastException异常系统环境参考资料问题1:KickoutSessionCo…

新的网站上线 linux视野

开通了新的网站www.linuxsight.com会一直专注着Linux文章的写作转载于:https://blog.51cto.com/87243/354662

js中toFixed方法的两个坑

js中toFixed方法的两个坑toFixed返回结果是string&#xff0c;后续使用它计算会错误toFixed返回结果可能出现负零-0.00toFixed返回结果是string&#xff0c;后续使用它计算会错误 代码演示&#xff1a; 类型判断代码示例&#xff1a; var stringNum (100.101).toFixed(2); v…

Redhat linux 5.3 基于bond的heartbeat

一、设置bond 1.修改网卡cd /etc/sysconfig/network-scripts/cp ifcfg-eth0 ifcfg-bond0vi ifcfg-bond0DEVICEbond0 ONBOOTyes BOOTPROTOnone IPADDR192.168.1.200 NETMASK255.255.255.0 GATEWAY192.168.1.1 USERCTLno TYPEEthernetvi ifcfg-eth0DEVICEeth0 ONBOOTyes BOOTPROT…

外挂:一个很杯具的关键字

在网页挂马泛滥的时代&#xff0c;盗号***不缺少传播到用户电脑的通道&#xff0c;因为只需要找一些与游戏有关的网站&#xff0c;或者在流量大的网站把网马一挂&#xff0c;就不愁钓不着鱼。如今&#xff0c;时代在变迁&#xff0c;安全软件已经成功的解决了网页挂马这个难题&…

java.lang.ClassNotFoundException: retrofit2.Retrofit$Builder解决思路

ClassNotFoundException报错具体问题报错详情推测可能是jar包问题问题总结自定义依赖缺少依赖jar具体问题 Caused by: java.lang.NoClassDefFoundError: retrofit2/converter/simplexml/SimpleXmlConverterFactory报错详情 org.springframework.web.util.NestedServletExcept…

varnish排错

●Troubleshooting varnish&#xff08;varnish排错&#xff09;<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" />有时候varnish会出错&#xff0c;为了使您知道该检查哪里&#xff0c;您可以检查varnishlog&#xff0c;/var/log…

图像质量评估方法——结构相似性指数(SSIM)

结构相似性指数&#xff08;SSIM&#xff09;是一种全参考图像质量评估方法&#xff0c;用于比较两幅图像的相似性。 SSIM的计算涉及到亮度&#xff08;Luminance&#xff09;、对比度&#xff08;Contrast&#xff09;和结构&#xff08;Structure&#xff09;三个方面的相似性…

OpenSSL加密与证书

加密 身份的验证 &#xff08;非对称加密&#xff09;数据的加密 &#xff08;对称加密&#xff09;数据的完整性 &#xff08;单向加密&#xff09;三者的联合使用会保证数据的安全机制 A&#xff1a;发送者 B&#xff1a;接收方 A的操作&#xff1a; A使用…