什么是Java的代理?

时间:2014-02-24 19:33:53

标签: java proxy-classes

我正在阅读Horstmann着名的书籍Core Java中的Proxies部分。我对这个概念不熟悉。正如书中所写,只有在编译时您还不知道需要实现哪些接口时,代理才是必需的。但是,在构造代理对象时,需要提供一个类对象数组,这些对象只是要实现的接口。这听起来像是一种自相矛盾吗? 请照亮我。谢谢!

1 个答案:

答案 0 :(得分:0)

不,没有自相矛盾。

您需要提供的此类对象数组可以是动态,即在运行时创建。通常,可以从配置文件中读取,您将从Class加载String对象。这通常是在创建代理实例时,有多少框架(例如Spring用于依赖注入)。

来自Proxy javadoc的改编示例:

String className = readClassNameFromFile(); 
Class<?> myClass = Class.forName(className);
Foo f = (Foo) Proxy.newProxyInstance(Foo.class.getClassLoader(),
                                          new Class[] { myClass },
                                          handler);