Exception in thread “main“ java.io.NotSerializableException:

导读:本篇文章讲解 Exception in thread “main“ java.io.NotSerializableException:,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

①报错:Exception in thread “main” java.io.NotSerializableException:com.aaa.test1.God

(翻译成中文:在com.aaa.test1.God类的线程中出现无序列化异常)
在这里插入图片描述

解决:在God类之后实现Serializable接口。即:implements Serializable

(extends是继承类,implements是实现接口。)java中 implement和extends的作用和区别详细解释https://blog.csdn.net/YouYou_GO/article/details/83539537
在这里插入图片描述

②设计模式测试—KQC

要求:

1.定义上帝类:
方法: 创建世界
2.要求使用懒汉,并且多线程安全的单例模式创建上帝类对象
3.接着针对创建的上帝类对象,使用深拷贝的方式,创建另外一个上帝对象
4.测试:
a.用单例模式获取两个上帝类对象,打印对象地址
b.用深拷贝方式获取两个对象,打印对象地址

实现效果:

在这里插入图片描述

代码:

CopyUtil :

package com.aaa.test1;

import java.io.*;

public class CopyUtil {
    public static Object copyDeep(Object obj) throws IOException, ClassNotFoundException {
        //定义 内存字节数组输出流:将字节数组输出到内存中的某个区域
        ByteArrayOutputStream bos=new ByteArrayOutputStream();
        //对象输出字节流:将数据对象写入到内存字节数组流中
        ObjectOutputStream oos=new ObjectOutputStream(bos);
        oos.writeObject(obj);

        //创造字节数组输入流:从上面的字节数组输出流中读取数据
        ByteArrayInputStream bis=new ByteArrayInputStream(bos.toByteArray());
        ObjectInputStream ois=new ObjectInputStream(bis);
        return ois.readObject();
    }
}

God :

package com.aaa.test1;

import java.io.Serializable;

public class God implements Serializable {
    //创造世界方法
    public void create(){
        System.out.println("创造世界");
    }

    //静态内部类
    static class InnerCls{
        //内部类中定义静态对象
        static God god=new God();
    }

    //获取静态内部类中的对象
    public static God getInstance(){
        return InnerCls.god;
    }
}

GodCopy :

package com.aaa.test1;

import java.io.IOException;

public class GodCopy {
    public static void main(String[] args) throws IOException, ClassNotFoundException {
        //原型对象
        God g1=new God();
        //通过字节数组流的方式,将对象数据写道内存中,然后再复制一份。实现深度copy
        God g2=(God) CopyUtil.copyDeep(g1);
        //调用方法
        g1.create();
        g2.create();
        //输出对象
        System.out.println(g1);
        System.out.println(g2);
    }
}

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/118028.html

(0)
seven_的头像seven_bm

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!