java 利用java反射机制动态加载类的简单实现
如下所示:
//////////////////Load.java packageorg.bromon.reflect; importjava.util.ArrayList; importjava.util.List; publicclassLoadimplementsOperator{ @Override publicList<?>act(List<?>params){ //TODOAuto-generatedmethodstub List<String>result=newArrayList<String>(); result.add(newString("加载成功")); returnresult; } } ///////////////////Operator.java packageorg.bromon.reflect; importjava.util.*; publicinterfaceOperator{ publicList<?>act(List<?>params); } /////////////Store.java packageorg.bromon.reflect; importjava.util.ArrayList; importjava.util.List; publicclassStoreimplementsOperator{ @Override publicList<?>act(List<?>params){ //TODOAuto-generatedmethodstub List<String>result=newArrayList<String>(); result.add(newString("Store")); returnresult; } } ///////////////Success.java packageorg.bromon.reflect; importjava.util.List; importjava.util.ArrayList; publicclassSuccessimplementsOperator{ @Override publicList<?>act(List<?>params){ //TODOAuto-generatedmethodstub List<String>result=newArrayList<String>(); result.add(newString("操作成功")); returnresult; } } ////////////////////////TestReflect.java packageorg.bromon.reflect; importjava.io.FileInputStream; importjava.lang.reflect.Method; importjava.util.ArrayList; importjava.util.Properties; importjava.util.List; publicclassTestReflect{ privateStringloadProtocal(Stringheader){ Stringresult=null; try{ Propertiesprop=newProperties(); FileInputStreamfis=newFileInputStream("emp.properties"); prop.load(fis); result=prop.getProperty(header); fis.close(); }catch(Exceptione){ System.out.println(e); } returnresult; } //针对消息作出响应,利用反射导入对应的类 publicStringresponse(Stringheader,Stringcontent){ Stringresult=null; Strings=null; try{ /* *导入属性文件emp.properties,查询header所对应 * *的类的名字通过反射机制动态加载匹配的类,所有的类都 * *被Operator接口隔离可以通过修改属性文件、添加新的类(继 * *承MsgOperator接口)来扩展协议 */ s="org.bromon.reflect."+this.loadProtocal(header); //加载类 Class<?>c=Class.forName(s); //创建类的事例 Operatormo=(Operator)c.newInstance(); //构造参数列表 Class<?>params[]=newClass[1]; params[0]=Class.forName("java.util.List"); //查询act方法 Methodm=c.getMethod("act",params); List<String>args=newArrayList<String>(); args.add(content); //调用方法并且获得返回 ObjectreturnObject=m.invoke(mo,args); List<?>list=(List<?>)returnObject; System.out.println(list.get(0)); }catch(Exceptione){ System.out.println("Handler-response:"+e); } returnresult; } publicstaticvoidmain(Stringargs[]){ TestReflecttr=newTestReflect(); tr.response("2000","消息内容"); } }
以上就是小编为大家带来的java利用java反射机制动态加载类的简单实现的全部内容了,希望对大家有所帮助,多多支持毛票票~