java - Java 中的代理有什么用?

标签 java proxy-classes

我正在阅读 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/

相关文章:

java - 如何向 java 中的许多方法添加类似的功能?

c# - 为什么我不能将此对象作为参数传递?

java - GridLayout不通过按钮点击添加组件?

java - 无法在 couchbase 服务器社区版 3.0.1 上更新 6m+ 文档

c# - 什么是控制反转/面向方面意义上的 .NET 代理对象?

c++ - vector<bool> 如何处理引用和迭代器?

c++ - iterator_traits中的嵌套指针类型有什么用?

java - 将 jar 文件 URI 转换为文件

java - org.hibernate.hql.ast.QuerySyntaxException : Unable to locate appropriate constructor on class

java - Eclipse 检测到错误的 Maven 依赖关系