反射之------获得运行时类的指定构造方法以及创建对象的操作
package com.heima.userJSTL; import java.lang.reflect.Constructor; import java.lang.reflect.InvocationTargetException; public class GetConstrect { public static void main(String[] args) throws NoSuchMethodException, IllegalAccessException, InvocationTargetException, InstantiationException { //获取当前运行时类的指定构造器,并创建该构造器的对象(这种方法并不常用我们一般的使用的是直接通过 // 当前运行时类的静态方法newInstance();直接创建一个对象,(底层还是使用的空参构造)) Class<Person> aClass = Person.class; Constructor<Person> declaredConstructor = aClass.getDeclaredConstructor(String.class);//构造方法不需要区分方法名,参数只需要形参列表 //暴力反射设置该构造器可以被访问 declaredConstructor.setAccessible(true); Person person = declaredConstructor.newInstance("张三"); System.out.println(person); //但是我们常用的穿件对象的方法是直接使用当前运行时类的Class对象的.newInstance();方法进行创建对象 Person person1 = aClass.newInstance(); System.out.println(person1); //使用当前运行时类的Class对象的.newInstance();方法的前提是: //1.必须要有空参构造器 //2.空参构造的权限修饰符要够,一般是public } }
迎风少年
【推荐】100%开源!大型工业跨平台软件C++源码提供,建模,组态!
【推荐】AI 的力量,开发者的翅膀:欢迎使用 AI 原生开发工具 TRAE
【推荐】2025 HarmonyOS 鸿蒙创新赛正式启动,百万大奖等你挑战
【推荐】博客园的心动:当一群程序员决定开源共建一个真诚相亲平台
· 《C#高级GDI+实战:从零开发一个流程图》增加贝塞尔曲线
· AES 加密模式演进:从 ECB、CBC 到 GCM 的 C# 深度实践
· InnoDB为什么不用跳表,Redis为什么不用B+树?
· 记一次 C# 平台调用中因非托管 union 类型导致的内存访问越界
· [EF Core]聊聊“复合”属性
· 博客园众包:再次诚征3D影像景深延拓实时处理方案(预算8-15万,需求有调整)
· 扣子(Coze),开源了!Dify 天塌了
· 精选 5 款 .NET 开源、功能强大的工作流系统,告别重复造轮子!
· 爆肝2月,我的 AI 代码生成平台上线了!
· 从经典产品看大模型方向