Java反射——创建运行时类的对象+动态性

1.通过Java反射创建运行时类的对象:
复制代码
 1 public static void test1() throws InstantiationException, IllegalAccessException {
 2         Class<Person> clazz = Person.class;
 3         //本质上内部仍是调用Person类的空参构造器
 4         /*
 5         要想使得该方法能够正常创建运行时类的对象,需满足以下几个条件:
 6         1.运行时必须提供类的空参构造器
 7         2.空参的构造器的范围权限得足够(通常设置为public)
 8 
 9         在Javabean中要求提供一个public的空参构造器,原因:
10         1.便于通过类的反射,创建运行时类的对象
11         2.便于子类继承此类时,默认调用super()时,父类有该构造器
12          */
13         Person obj = clazz.newInstance();
14         System.out.println(obj);
15     }
复制代码

 

2.Java反射动态性的体现:
复制代码
 1 public static void test2() {//反射的动态性
 2         int num = new Random().nextInt(2);
 3         String classPath = "";
 4         System.out.println(num);
 5         if (num == 0) {
 6             classPath = "Person";
 7         } else {
 8             classPath = "Dog";
 9         }
10         Object obj = null;
11         try {
12             obj = getInstance(classPath);
13         } catch (Exception e) {
14             throw new RuntimeException(e);
15         } finally {
16             System.out.println(obj);
17         }
18     }
19 
20     public static Object getInstance(String classPath) throws Exception {
21         Class clazz = Class.forName(classPath);
22         return clazz.newInstance();
23     }
复制代码

 

posted @   jue1e0  阅读(249)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
点击右上角即可分享
微信分享提示