300.33通过读取配置文件方式来使用反射完成实例对象调用方法

来源:互联网 发布:梦幻西游mac 编辑:程序博客网 时间:2024/06/04 20:50

NewFile.xml

<?xml version="1.0" encoding="UTF-8"?><web-app xmlns="http://www.example.org/web-app_2_5" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.example.org/web-app_2_5 web-app_2_5.xsd"version="2.5"><servlet><servlet-name>myServlet</servlet-name><servlet-class>tet.Servlet2</servlet-class></servlet><servlet-mapping><servlet-name>myServlet</servlet-name><url-pattern>/hello</url-pattern></servlet-mapping></web-app>

Servlet1.java

package tet;public interface Servlet1 {public void init();public void service();public void destory();}

Servlet2.java

package tet;public class Servlet2 implements Servlet1{public void init() {System.out.println("初始化");}public void service() {System.out.println("服务");}public void destory() {System.out.println("销毁");}}

Reflect.java

package tet;import org.dom4j.Document;import org.dom4j.Element;import org.dom4j.io.SAXReader;import org.junit.Test;public class Reflect {@Testpublic void test() {try {SAXReader s = new SAXReader();Document doc =  s.read("src/tet/NewFile.xml");Element rElement =doc.getRootElement();Element e1 = rElement.element("servlet");String s2 = e1.element("servlet-class").getText();Class clazz = Class.forName(s2);Servlet2 o = (Servlet2)clazz.newInstance();o.init();o.service();o.destory();} catch (Exception e) {e.printStackTrace();}}}


阅读全文
0 0
原创粉丝点击