概念
反射就是把Java中的各个组成部分映射成一个个Java对象
例如:类中有包名,构造函数,字段,方法,利用反射技术对一个类进行解剖,把各个组成部分映射成一个个对象
动态获取指定类以及类中的内容(成员),并运行其内容
应用程序已经运行,无法在其中进行new对象的建立,就无法使用对象。这时可以根据配置文件的类全名去找对应的字节码文件,并加载进内存,并创建该类对象实例。这就需要使用反射技术完成
Java反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法,对于任意一个对象,都能够调用它的属性和方法。使用反射,可以对类Class,构造方法Constructor,普通方法Method,字段Field进行操作
class对象:对class文件的描述
获取class对象:已知类的完整路径名:Class.forName(类名全称) 使用默认构造方法创建实例:newInstance方法
demo:
package com.sh.day12;
import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
import org.junit.Test;
public class TestUploadServlet {
@Test
public void Test(){
try {
//通过dom解析xml文件获取类全名
SAXReader sax=new SAXReader();//创建解析器对象SaxReader
Document doc = sax.read("src/web.xml");//SaxReader加载xml文档获得Document
Element rootElement = doc.getRootElement();//获取根元素
Element element = rootElement.element("servlet");
String className = element.element("servlet-class").getText();
//获取class对象
Class<?> class1 = Class.forName(className);
//创建实例
UploadServlet p = (UploadServlet) class1.newInstance();
//调用person中的方法
p.setAge(21);
p.setName("zs");
System.out.println(p.getName()+"..."+p.getAge());
} catch (Exception e) {
e.printStackTrace();
}
}
}