创建实例的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 @   aaacarrot  阅读(524)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
点击右上角即可分享
微信分享提示