Java reflection (反射入门实例)

  1. 获取Class实例的三种方式
    Class实例:Class实例对应这加载到内存中的一个运行时类。
		//1
		Class clazz = String.class;
		//2
		Person person = new Person();
		Class clazz1 = person.getClass();
		//3.参数为全类名
		Class clazz2 = Class.forName("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");
		//设置方法的可访问性为true
		method.setAccessible(true);
		//创建一个运行时类的对象实例
		Person person2 = (Person) clazz3.newInstance();
		//把运行时类的实例传入invok方法,并且调用其方法。
		method.invoke(person2);
发布了70 篇原创文章 · 获赞 4 · 访问量 3049

猜你喜欢

转载自blog.csdn.net/qq_34515959/article/details/104913160