当前位置: 代码迷 >> 综合 >> Java reflection (反射入门实例)
  详细解决方案

Java reflection (反射入门实例)

热度:65   发布时间:2023-09-30 04:26:27.0
  1. 获取Class实例的四种方式
    Class实例:Class实例对应这加载到内存中的一个运行时类。
		//1Class clazz = String.class;//2Person person = new Person();Class clazz1 = person.getClass();//3.参数为全类名Class clazz2 = Class.forName("reflection.Person");//第三种方式最常用,因为能体现使用反射的动态性//4. 使用类加载器获取Class类对象(运行是类对象)Class clazz4 = Demo.class.getClassLoader().loadClass("reflection.Person");
  1. 对Class类的理解:
    面向对象的思想是万物皆为对象,那么把内存中运行时类也可看做是对象,并把他们归类为Class类。实际中一个Class类实例对应着运行时的一个类。

  2. 创建Class对应运行时类的对象的通用方法。以及这样操作,需要对应的运行时类构造器方面满足的要求。

//首先获取运行时类对应的Class实例clazz
Object object = clazz.newInstance(); //1. 必须要有空参构造器
//2. 权限修饰符的权限要够,通常设置为public
  1. 如何通过反射调用类的方法:
		//获取运行时类所对应Class的对象实例Class clazz3 = Class.forName("reflection.Person");//获取对应的Method类对象实例Method method = clazz3.getDeclaredMethod("hello");//设置方法的可访问性为truemethod.setAccessible(true);//创建一个运行时类的对象实例Person person2 = (Person) clazz3.newInstance();//把运行时类的实例传入invok方法,并且调用其方法。method.invoke(person2);
  相关解决方案