Java中的代理有什么作用?

3

我正在阅读Horstmann的著名书籍Core Java中的代理部分。虽然我对这个概念很陌生,但在书中写道,只有当您在编译时不知道需要实现哪些接口时,才需要使用代理。但是,当您构造代理对象时,您需要提供一个类对象数组,这些对象只是要实现的接口。这难道不听起来像是自相矛盾吗?请为我解惑。谢谢!


你在这里看到了“自我冲突”吗? - PM 77-1
如果您可以提供要实现的接口数组,那么这应该意味着您已经知道需要实现哪些接口。 - HFanJava
数组需要被提供时? - PM 77-1
一个模拟框架应该是代理的一个流行用例,因为该框架在不知道需要模拟的类的情况下编写。 - zapl
好的。书中使用的示例在编译时提供了Class[],可能是因为它只是一个玩具示例。 - HFanJava
显示剩余2条评论
1个回答

0

不,没有自相矛盾。

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

来自Proxy javadoc的示例:

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

谢谢您的回复!这个例子确实解除了我的疑惑。 - HFanJava

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接