java 利用java反射机制动态加载类的简单实现
程序员文章站
2024-03-13 14:24:21
如下所示:
////////////////// load.java
package org.bromon.reflect;
import java....
如下所示:
////////////////// load.java package org.bromon.reflect; import java.util.arraylist; import java.util.list; public class load implements operator { @override public list<?> act(list<?> params) { // todo auto-generated method stub list<string> result=new arraylist<string>(); result.add(new string("加载成功")); return result; } } /////////////////// operator.java package org.bromon.reflect; import java.util.*; public interface operator { public list<?> act(list<?> params); } /////////////store.java package org.bromon.reflect; import java.util.arraylist; import java.util.list; public class store implements operator { @override public list<?> act(list<?> params) { // todo auto-generated method stub list<string> result=new arraylist<string>(); result.add(new string("store")); return result; } } ///////////////success.java package org.bromon.reflect; import java.util.list; import java.util.arraylist; public class success implements operator { @override public list<?> act(list<?> params) { // todo auto-generated method stub list<string> result=new arraylist<string>(); result.add(new string("操作成功")); return result; } } ////////////////////////testreflect.java package org.bromon.reflect; import java.io.fileinputstream; import java.lang.reflect.method; import java.util.arraylist; import java.util.properties; import java.util.list; public class testreflect { private string loadprotocal(string header) { string result = null; try { properties prop = new properties(); fileinputstream fis = new fileinputstream("emp.properties"); prop.load(fis); result = prop.getproperty(header); fis.close(); } catch (exception e) { system.out.println(e); } return result; } // 针对消息作出响应,利用反射导入对应的类 public string response(string header, string content) { string result = null; string s = null; try { /* * 导入属性文件emp.properties,查询header所对应 * * 的类的名字 通过反射机制动态加载匹配的类,所有的类都 * * 被operator接口隔离 可以通过修改属性文件、添加新的类(继 * * 承msgoperator接口)来扩展协议 */ s = "org.bromon.reflect." + this.loadprotocal(header); // 加载类 class<?> c = class.forname(s); // 创建类的事例 operator mo = (operator) c.newinstance(); // 构造参数列表 class<?> params[] = new class[1]; params[0] = class.forname("java.util.list"); // 查询act方法 method m = c.getmethod("act", params); list<string> args = new arraylist<string>(); args.add(content); // 调用方法并且获得返回 object returnobject = m.invoke(mo, args); list<?> list=(list<?>)returnobject; system.out.println(list.get(0)); } catch (exception e) { system.out.println("handler-response:" + e); } return result; } public static void main(string args[]) { testreflect tr = new testreflect(); tr.response("2000", "消息内容"); } }
以上就是小编为大家带来的java 利用java反射机制动态加载类的简单实现的全部内容了,希望对大家有所帮助,多多支持~