反射机制

反射机制,简单来说就是帮助我们在动态运行的时候,对于任意一个类,可以获取其所有的方法,所有的变量。举一个例子,在我们用IDE写代码的时候,会有一个智能提醒功能,比如我们输入一个对象,然后想调用它的方法的时候,写一个点好,就会自动提醒这个对象有什么方法,这个功能就是应用了反射机制,获取了这个对象的具体信息。

反射最重要的用途就是开发各种通用框架,很多框架(比如之后要学习的spring)都是配置化的(比如通过xml文件配置bean),为了保证框架的通用型,它们可能需要根据配置文件加载不同的对象或者类,调用不同的方法,这个时候就必须运用反射,在运行时动态加载需要加载的对象。

从另一个角度再分析一下,反射包含了一个"反"的概念,那么和它相对的"正"的概念,就是指用户使用一个类,应该先知道这个类,然后通过这个类产生实例化对象,像这样进行类对象的初始化称为"正"。而反射就是一开始并不知道我们要初始化的类对象是什么,没有办法通过new关键字创建,只能在运行时才知道要操作的类是什么,并且可以在运行时获取类的完整结构,并调用对应的方法。