反射相关

2020-03-02  本文已影响0人  许方镇

Class

所谓的Class对象就是Class文件在内存中的实例。

Class对象获取的三种方式

Entity entity = new Entity();

  1. Class entityClass = Entity.class; //利用类

  2. Class entityClass = entity.getClass();//利用对象

  3. Class entityClass = Class.forName("com.onlyone.reflect.Entity");//利用类的全限定路径

利用 Class 创建对象

无参数
Entity entity = (Entity) entityClass.newInstance();
有参数
Entity entity = (Entity) entityClass.getConstructor(String.class).newInstance("小明");
私有
Constructor entityConstructor = entityClass.getDeclaredConstructor(String.class, int.class);
entityConstructor.setAccessible(true);
Entity entity = (Entity) entityConstructor.newInstance("小明", 20);

注意:

  1. 上面需要使用 int.class,而不是Integer.class
  2. getDeclaredxxx 可以获取该类自己包括私有在内的xxx,
  3. getxxx 只能获取public,不过可以获取包括其子类的xxx。
  4. 私有的访问前需要 setAccessible(true);

动态代理

上一篇下一篇

猜你喜欢

热点阅读