一,反射的概念
Java反射机制实在运行状态中,对于任何一个类,都能知道这个类的所有属性和方法。对于任意一个对象,都能调用它的任意方法和属性。这种动态获取信息以及动态调用对象方法的功能被称为Java反射机制
反射是Java的特征之一,项目中Java程序在运行的过程中,自动去识别并创建对应的类,能够动态的调用类的属性、构造方法、类中的方法。一句话描述:在程序中能动态调用不同的类和属性,去执行特定的操作。
Java的反射(reflection)机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意方法和属性,既然能拿到那么,我们就可以修改部分类型信息;这种动态获取信息以及动态调用对象方法的功能称为java语言的反射(reflection)机制。
二,反射的应用
在日常的第三方应用开发过程中,经常会遇到某个类的某个成员变量、方法或是属性是私有的或是只对系统应用开放,这时候就可以利用Java的反射机制通过反射来获取所需的私有成员或是方法
三,反射的类
类名 | 用途 |
Class类 | 代表类的实体,在运行的java应用程序中表示类和接口 |
Field类 | 代表类的成员变量/类的属性 |
Method类 | 代表类的方法 |
Constructor类 | 代表类的构造方法 |
四,相关代码
package com.yang.servlet;
import com.yang.service.BookService;
import java.io.InputStream;
import java.lang.reflect.Constructor;
import java.util.Properties;
public class Test01 {
public static void main(String[] args) throws Exception {
InputStream stream = Test01.class.getClassLoader().getResourceAsStream("info.properties");
Properties p = new Properties();
p.load(stream);
String classname = p.getProperty("className");
Class cla = Class.forName(classname);
Constructor constructor = cla.getDeclaredConstructor();
BookService bookService = (BookService) constructor.newInstance();
bookService.fun();
}
}