我正在阅读 Horstmann 的著名著作《Core Java》中的代理部分。不过我对这个概念很陌生。正如书中所写,只有当您在编译时尚不知道需要实现哪些接口(interface)时才需要代理。但是,当您构造代理对象时,您需要提供一个类对象数组,这些对象只是要实现的接口(interface)。听起来不觉得很自相矛盾吗? 请照亮我。谢谢!
最佳答案
不,没有自相矛盾。
您需要提供的类对象数组可以是动态的,即在运行时创建。通常,它可以从配置文件中读取,您可以在其中从 String
加载 Class
对象。这通常是创建代理实例时有多少框架(例如用于依赖注入(inject)的 Spring)正在工作。
改编自 Proxy
javadoc 的示例:
String className = readClassNameFromFile();
Class<?> myClass = Class.forName(className);
Foo f = (Foo) Proxy.newProxyInstance(Foo.class.getClassLoader(),
new Class[] { myClass },
handler);
关于java - Java 中的代理有什么用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21997215/