我正在阅读Horstmann的著名著作Core中的代理部分。不过,我对这个概念并不熟悉。正如书中所写的,只有在编译时还不知道需要实现哪些接口时,代理才是必要的。但是,当您构造代理对象时,您需要提供一个类对象数组,这些类对象只是要实现的接口。听起来不像是自相矛盾吗?请照亮我。谢谢!
发布于 2014-02-24 19:51:09
不,没有自相矛盾。
您需要提供的这个类对象数组可以是动态的,即在运行时创建。通常,它可以从配置文件中读取,在配置文件中,您将从Class对象中加载String对象。在创建代理实例时,这通常是很多框架(比如依赖项注入的Spring )的工作方式。
改编自 javadoc的例子
String className = readClassNameFromFile();
Class<?> myClass = Class.forName(className);
Foo f = (Foo) Proxy.newProxyInstance(Foo.class.getClassLoader(),
new Class[] { myClass },
handler);https://stackoverflow.com/questions/21997215
复制相似问题