创建实例的4种方式

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

posted @ 2023-01-26 16:38  aaacarrot  阅读(455)  评论(0编辑  收藏  举报