单例模式序列或反射破坏单例模式产生的Exception in thread "main" java.io.InvalidClassException:错误
2021/12/13 22:20:52
本文主要是介绍单例模式序列或反射破坏单例模式产生的Exception in thread "main" java.io.InvalidClassException:错误,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
package com.itheima.pattern.singleton.demo7; import java.io.Serializable; public class Singleton implements Serializable{ // 私有构造方法 private Singleton(){} //定义一个静态内部类 private static class SingletonHolder implements Serializable { //在内部类中声明并初始化外部类的对象 private static final Singleton Instance = new Singleton(); } //提供一个外部的公共访问方式 public static Singleton getInstance(){ return SingletonHolder.Instance; } //当进行反序列化时,会自动调用该方法,将该方法的返回值直接返回 //加上这个方法就不报错了 public Object readResolve(){ return SingletonHolder.Instance; } }
package com.itheima.pattern.singleton.demo7; import java.io.*; /** * 测试使用反射破坏单例模式 */ public class Client { public static void main(String[] args) throws Exception { // writeObject2File(); readObjectFromFile(); // readObjectFromFile(); } //从文件读取数据(对象) public static void readObjectFromFile() throws Exception{ //创建对象输入流对象 ObjectInputStream ois =new ObjectInputStream( new FileInputStream("C:\\Users\\Administrator\\Desktop\\a.txt" ) ); //读取对象 Singleton instance = (Singleton) ois.readObject(); System.out.println(instance); //释放资源 ois.close(); } // 向文件中写数据(对象) public static void writeObject2File() throws Exception { //1.获取singleton对象 Singleton instance =Singleton.getInstance(); //2.创建对象输出流对象 ObjectOutputStream oos = new ObjectOutputStream( new FileOutputStream( "C:\\Users\\Administrator\\Desktop\\a.txt" ) ); //3.写对象 oos.writeObject( instance ); //4.释放资源 oos.close(); } }
这篇关于单例模式序列或反射破坏单例模式产生的Exception in thread "main" java.io.InvalidClassException:错误的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-01后台管理开发学习:新手入门指南
- 2024-11-01后台管理系统开发学习:新手入门教程
- 2024-11-01后台开发学习:从入门到实践的简单教程
- 2024-11-01后台综合解决方案学习:从入门到初级实战教程
- 2024-11-01接口模块封装学习入门教程
- 2024-11-01请求动作封装学习:新手入门教程
- 2024-11-01登录鉴权入门:新手必读指南
- 2024-11-01动态面包屑入门:轻松掌握导航设计技巧
- 2024-11-01动态权限入门:新手必读指南
- 2024-11-01动态主题处理入门:新手必读指南