首页 > 其他分享 >创建实例的4种方式

创建实例的4种方式

时间:2023-01-26 16:44:06浏览次数:60  
标签:方式 对象 创建 Dog Person 实例 new 序列化

java里面创建实例有哪些方式呢?

  • 直接new 一个
  • 通过反射
  • 通过 clone 方法
  • 通过反序列化

new 一个实例

// 使用java语言的关键字 new 创建对象,初始化对象数据,这个确实就没有什么好说的了,应该也是用得最多的的了
    Dog doge = new Dog();

通过反射生成一个实例

Class.forName('com.mysql.jdbc.Driver.class');//加载 MySql 的驱动类。
类似这种就是反射, 很多框架都用到反射机制, hibernate, struts 都是用反射机制实
现的。

这种方式就需要拿到这个类的路径,

通过 clone 方式

Dog doge = new Dog();
Dog doge2 = doge.clone();

通过反序列化获取对象

一个对象要实现序列化接口,才可以通过反序列化生成对象实例
(为什么要序列化,数据要持久化到硬盘中,或需要进行网络传输,都需要序列化生成为字节数组进行存储或传输,然后再通过字节序列反序列化回对象实例)

    private static void read() throws IOException {
        // 创建反序列化流对象
        ObjectInputStream ois = new ObjectInputStream(new FileInputStream("a.txt"));
        // 读取,还原对象
        try {
            Person p = (Person) ois.readObject();
            System.out.println(p.toString());
        } catch (ClassNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        ois.close();
    }

    private static void write() throws IOException {
        // 创建序列化流对象
        // public ObjectOutputStream(OutputStream out)
        ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("a.txt"));
        // 创建对象
        Person p = new Person("java", 20);
        oos.writeObject(p);
        // 释放资源
        oos.close();
    }

参考来源: https://www.jianshu.com/p/7584b028cbda

标签:方式,对象,创建,Dog,Person,实例,new,序列化
From: https://www.cnblogs.com/aaacarrot/p/17067912.html

相关文章

  • vue3中获取ref元素的几种方式总结
    1.原生js获取dom元素:document.querySelector(选择器)document.getElementById(id选择器)document.getElementsByClassName(class选择器)2.ref获取单个dom元素:<temp......
  • Openstack-创建实例错误
    创建实例错误实例执行所请求操作失败,实例处于错误状态。:请稍后再试[错误:Buildofinstancebeaeb5e0-26eb-4044-ae14-bb87d509886daborted:Failedtoallocateth......
  • VC下这样创建实例m_pRecordset.CreateInstance(_uuidof(Connection))不一定成功!...
    //昨天在打开数据库的记录集时,出现了一个错误,错误提示为无效的指针类型,上网查了一下,原来是我的//的程序在创建实例时,出现了错误,呵呵,以前我都是这样创建实例的:m_pRecordset.......
  • 用java创建文件:123.txt
    importjava.io.File;//引入File类importjava.io.IOException;//引入IOException类publicclasstestFile{publicstaticvoidmain(String[]args){......
  • 组件通信的方式
    Vue组件的通信方式分为两大类,一类是父子组件通信,另一类是任何关系类型组件通信(父子、兄弟、非兄弟)父子组件的通信方式:父给子传递数据,通过给子组件添加自定义属性,比如:,list......
  • 节约内存的编程方式
    以图形用户界面(GUI,GraphicalUserInterface)为基础的Windows,可以说是一个巨大的操作系统。Windows的前身是MS-DOS操作系统,最初版本可以在128KB左右的内存上运行,而想要W......
  • ASP.NET2.0运行时提示:以一种访问权限不允许的方式做了一个访问套接字的尝试
    在调试ASP.NET的时候常出现如下错误错误消息框:   未能开始侦听端口xxxxx以一种访问权限不允许的方式做了一个访问套接字的尝试解决方法:找到该项目的sln......
  • 详细实例说明+典型案例实现 对枚举法进行全面分析 | C++
    第五章枚举法:::hljs-center目录第五章枚举法●前言1.简要介绍2.代码及结果示例(简单理解)3.生活实例●二、枚举法的典型案例——鸡兔同笼&质数求解1.鸡......
  • mybatis添加mapper映射文件的四种方式
    一、绝对路径引入(不推荐使用)<!--1.绝对路径引入--><mapperurl="file:\\\D:\stsbundle\workplace\mybatis_demo\src\main\resources\mapper\UserMapper.xml"/>二......
  • bean的实例化
    1.构造方法    ......