首页 > 其他分享 >实现Serializable的单例类

实现Serializable的单例类

时间:2023-05-29 12:35:04浏览次数:37  
标签:return 实现 Object Dog static 单例 new Serializable


//一个实现了Serializable 的单例类,必须有一个readResolve 方法,用以返回它的唯一的实例。
//对一个实现了Serializable 的类进行了扩展,或者实现了一个扩展自Serializable 的接口,
//使得我们在无意中实现了Serializable。


static class Dog extends Exception {
	public static final Dog INSTANCE = new Dog();
	private Dog() {}
	public String toString() {
		return "Woof";
	}
	//用于解决返回新实例的问题
	private Object readResolve() {
		return INSTANCE;
	}
}
static public Object deepCopy(Object obj) {
	try {
		ByteArrayOutputStream bos =
				new ByteArrayOutputStream();
		new ObjectOutputStream(bos).writeObject(obj);
		ByteArrayInputStream bin =
			new ByteArrayInputStream(bos.toByteArray());
		return new ObjectInputStream(bin).readObject();
	} catch(Exception e) {
		throw new IllegalArgumentException(e);
	}
}

 

 

标签:return,实现,Object,Dog,static,单例,new,Serializable
From: https://blog.51cto.com/u_16131764/6370071

相关文章

  • ArrayList的实现原理
    一、 ArrayList概述:  ArrayList是基于数组实现的,是一个动态数组,其容量能自动增长,类似于C语言中的动态申请内存,动态增长内存。   ArrayList不是线程安全的,只能用在单线程环境下,多线程环境下可以考虑用Collections.synchronizedList(Listl)函数返回一个线程安全的ArrayList......
  • HashSet的实现原理
    1.HashSet概述:HashSet实现Set接口,由哈希表(实际上是一个HashMap实例)支持。它不保证set 的迭代顺序;特别是它不保证该顺序恒久不变。此类允许使用null元素。HashSet中不允许有重复元素,这是因为HashSet是基于HashMap实现的,HashSet中的元素都存放在HashMap的key上面,而value中的值都......
  • mysql、sqlserver、oracle分页,java分页统一接口实现
    定义:pageStart起始页,pageEnd终止页,pageSize页面容量oracle分页:rownum numfrom(实际传的SQL)where rownum<=pageEnd)wherenum>=pageStartsqlServer分页:           select*from(select top 页面容量from(select top字段Adesc)astemptable2orderb......
  • 【lwip】14-TCP协议分析之TCP协议之可靠传输的实现(TCP干货)
    lwip_14_TCP协议之可靠传输的实现前言‍前面章节太长了,不得不分开。这里已源码为主,默认读者已知晓概念或原理,概念或原理可以参考前面章节,有分析。参考:李柱明博客:https://www.cnblogs.com/lizhuming/p/17438743.html‍两个时钟处理函数lwip的时钟机制可以翻看前面章节。lw......
  • 500行代码手写docker-实现硬件资源限制cgroups
    (5)500行代码手写docker-实现硬件资源限制cgroups本系列教程主要是为了弄清楚容器化的原理,纸上得来终觉浅,绝知此事要躬行,理论始终不及动手实践来的深刻,所以这个系列会用go语言实现一个类似docker的容器化功能,最终能够容器化的运行一个进程。本章的源码已经上传到github,地址如......
  • 前端页面Table CSS实现固定表头表首行和固定列拖动固定
    需要用到的2个属性table-layout:fixedposition:stickytable-layouttable-layout属性有两种特定值:auto(预设值)-表格的总宽度决定每一个储存格(cell)的最大值fixed-表格的总宽度决定于表格width的定义,以及各栏位(column)width的定义为了让表格呈现滚动效果,必须设定table-......
  • Python generator 构建协程,实现异步编程(使用yield构建消息处理者和消息创造者)
    协程的定义理解Python协程可以在单个处理机或多个处理机上运行,这取决于具体实现方式。在Python中,主要有两种协程实现方式:生成器协程和asyncio协程。生成器协程只能在单个处理机上运行,因为生成器协程是通过生成器函数实现的,而生成器函数在单个线程中执行。生成器协程也称为......
  • Spring中的单例bean是线程安全的吗?
    Spring并没有对单例bean作线程安全的处理,在并发条件下Spring的bean是否是线程安全的有如下两种情况:(1)无状态的bean:没有数据存储能力,例如service类和dao类都是无状态的bean,所以是线程安全的。(2)有状态的bean:有数据存储能力,在并发环境下会发生线程安全问题,需要自行保证线程安全问题,......
  • Hive的用户自定义函数实现步骤与流程
    参考答案:1、如何构建UDF?用户创建的UDF使用过程如下:第一步:继承UDF或者UDAF或者UDTF,实现特定的方法;第二步:将写好的类打包为jar,如hivefirst.jar;第三步:进入到Hive外壳环境中,利用addjar/home/hadoop/hivefirst.jar注册该jar文件;第四步:为该类起一个别名,createtemporaryfunctionmylen......
  • 自来水厂泵站PLC控制系统如何实现远程监控智慧运维
    随着自动化与物联网技术的飞速发展,诸多行业在无人化、智能化、数字化的要求越来越高。水务行业中无论是污水处理、泵站、消毒加药、供排水管网、水质监测等方面都能实现自动化控制,借助PLC数据采集实现远程监控智慧运维,具有广大的应用场景和实用价值。自来水厂的泵站不可避免的使用......