什么是com.sun.proxy。$ Proxy
我已经看到,当错误在不同的框架(例如,实现EJB规范的框架或某些JPA提供程序的框架)中发生深层错误时,stacktrace将包含诸如这样的类com.sun.proxy.$Proxy
。我知道什么是代理,但是我正在寻找更技术性和更特定于Java的答案。
- 这些是什么?
- 它们是如何创建的?
- 与JVM有什么关系?它们是特定于JVM实现的吗?
回答:
代理是在运行时创建和加载的类。这些类没有源代码。我知道您想知道如果没有针对他们的代码,如何让他们做一些事情。答案是,在创建它们时,您指定一个实现的对象,该对象
InvocationHandler
定义了在调用代理方法时要调用的方法。您可以通过调用创建它们
Proxy.newProxyInstance(classLoader, interfaces, invocationHandler)
参数为:
1. `classLoader`。一旦生成了类,就使用该类加载器加载它。2. `interfaces`。一类必须全部是接口的类对象。生成的代理实现所有这些接口。
3. `invocationHandler`。这就是您的代理知道调用方法时该怎么做的方式。这是一个实现的对象`InvocationHandler`。当从任何受支持的接口,或一个方法`hashCode`,`equals`或者`toString`被调用,该方法`invoke`调用的处理程序中,经过`Method`用于向被调用的方法和传递的参数对象。
有关更多信息,请参见Proxy
该类的文档。
- 1.3版之后的JVM的每个实现都必须支持这些实现。它们以特定于实现的方式加载到JVM的内部数据结构中,但可以保证正常工作。
以上是 什么是com.sun.proxy。$ Proxy 的全部内容, 来源链接: utcz.com/qa/422115.html