Java中利用反射实现类的动态加载2011-02-14//首先定义一个接口来隔离类: public interface Operator { // public java.util.List act(java.util.List params); public java.util.List act(String content,String content2,java.util.List params); }根据设计模式的原理,我们可以为不同的功能编写不同的类,每个类都继承Operator接口,客户端只需要针对Operator接口编程就可以避免很多麻烦。比如这个类:import java.util.*; public class Success implements Operator { public static void main(String[] args) { List list = new ArrayList(); list.add("Success3"); Operator op = new Success(); System.out.println("act===" + op.act("Success1", "Success2", list)); } // public java.util.List act(java.util.List params) public java.util.List act(String content, String content2, java.util.List params) { List result = new ArrayList(); result.add(content); result.add(content2); result.add(params); return result; } }同样,也可以写另一个类:import java.util.*; public class Load implements Operator { public static void main(String[] args) { List list = new ArrayList(); list.add("Load3"); Operator op = new Load(); System.out.println("act===" + op.act("Load1", "Load2", list)); } // public java.util.List act(java.util.List params) public java.util.List act(String content, String content2, java.util.List params) { List result = new ArrayList(); result.add(content); result.add(content2); result.add(params); return result; } }我们还可以写其他很多类,但是有个问题,接口是无法实例化的,我们必须手动控制具体实例化哪个类,这很不爽,如果能够向应用程序传递一个参数,让自己去选择实例化一个类,执行它的act方法,那我们的工作就轻松多了。很幸运,我使用的是Java,只有Java才提供这样的反射机制,或者说内省机制,可以实现我们的无理要求。编写一个配置文件emp.properties:#成功响应1000=Success#向客户发送普通文本消息2000=Load#客户向服务器发送普通文本消息3000=Store