Java,反射创建对象的两种方式

跟着孙哥学Spring,b站:https://www.bilibili.com/video/BV185411477k/?spm_id_from=333.337.search-card.all.click

在Java中,我们可以使用反射来创建对象。这里有两种主要的方式:

1. 使用 Class.forName().newInstance() 方法

这种方式是使用默认的无参数构造函数来创建对象。如果这个类没有默认的无参数构造函数,那么这种方式会抛出异常。

Class<?> clazz = Class.forName("com.baizhiedu.User");
User newInstance = (User) clazz.newInstance();

2. 使用 Constructor.newInstance() 方法

这种方式是通过反射的方式获取类的构造函数,然后通过构造函数来创建对象。这种方式更加灵活,可以用来创建有参数构造函数的对象,也可以用来创建私有构造函数的对象。但是这种方式的代码更复杂,执行效率也比直接使用newInstance方法低。

Class<?> clazz = Class.forName("com.baizhiedu.User");
Constructor<?> ctor = clazz.getDeclaredConstructor();
User user = (User) ctor.newInstance();

如果你需要创建的对象的构造函数有参数,或者构造函数是私有的,那么你需要使用Constructor.newInstance()方法来创建对象。例如,如果你的构造函数需要一个String类型和一个int类型的参数,你可以这样做:

Constructor<?> ctor = clazz.getDeclaredConstructor(String.class, int.class);
User user = (User) ctor.newInstance("username", 25);

在这个例子中,newInstance方法接收的参数应该与你在getDeclaredConstructor方法中指定的参数类型相匹配。这样,你就可以创建具有任何你需要的构造函数的新对象了。

posted @   zzusjw  阅读(285)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
点击右上角即可分享
微信分享提示