首页 > 编程语言 > 详细

Spring3.x__反射机制

时间:2020-04-15 20:32:20      阅读:62      评论:0      收藏:0      [点我收藏+]

1.通过反射机制创建对象过程

cagegory类:

public class cagegory {
  private Integer id;
  private String name;

  //自行脑补set get 方法.
}

cagegory对象的创建:

 

  //获取当前进程的类加载器
  ClassLoader loader = Thread.currentThread().getContextClassLoader();
  Class clazz = loader.loadClass("jzx.bean.cagegory");

  //获取类的默认构造器对象并调用 构造该对象
  Constructor cons = clazz.getDeclaredConstructor(null);
  cagegory cage = (cagegory)cons.newInstance();

  Method setName = clazz.getMethod("setName", String.class);
  setName.invoke(cage, "盖伦");
  Method setId = clazz.getMethod("setId", Integer.class);
  setId.invoke(cage, 3);

  //获取 类的成员变量类

  Field id = clazz.getDeclaredField("id");

  //当成员变量是 private时,使用setAccessible方法略过JVM安全检查。
  id.setAccessible(true);
  id.set(cage, 7);


  System.out.println(cage.toString());

 

额外解读:

每次运行JVM时,都会产生三个加载器:分别是 根加载器(ClassLoader),扩展类加载器(ExtClassLoader) 和  系统类加载器(AppClassLoader)。

默认使用的是 系统类加载器,它是扩展类加载器的子类,扩展类加载器又是 根加载器的子类,但是根加载器是c++编写的,在java中访问不能。

 

  

Spring3.x__反射机制

原文:https://www.cnblogs.com/bigAssBoy/p/12707176.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!