2009-04-23 7 views
10

Ich verstehe, wie Sie dynamische Proxies in Java verwenden, aber was ich nicht verstehe, ist, wie die VM tatsächlich einen dynamischen Proxy erstellt. Wird Bytecode erzeugt und geladen? Oder etwas anderes? Vielen Dank.Wie funktioniert der dynamische Proxy von Java?

+1

James, du bist wie ein Java-Guru. Haben Sie uns gerade mit dieser Frage getestet? – erickson

+0

Haha. Ich kenne die Java-Sprache, aber ich bin kein echter VM-Experte. :) –

Antwort

12

zumindest für Sun-Implementierung, wenn Sie auf den Quellcode von java.lang.reflect.Proxy aussehen werden Sie sehen, dass ja, es den Bytecode erzeugt on-the-fly (mit der Klasse sun.misc.ProxyGenerator) .

5

Ich schlage vor, dass Sie Dynamic Proxy Classes lesen:

Die Proxy.getProxyClass Methode gibt die java.lang.Class Objekt für einen Proxy- Klasse einen Klassenlader gegeben und eine Reihe von Schnittstellen. Die Proxy-Klasse wird in der angegebenen Klasse loader definiert und implementiert alle von gelieferten Schnittstellen. Wenn eine Proxy-Klasse für die gleiche Permutation der Schnittstellen bereits in der Klasse loader definiert wurde, wird die vorhandene Proxy-Klasse zurückgegeben; andernfalls wird ein Proxy Klasse für diese Schnittstellen dynamisch generiert und in der Klassenlader definiert. [Hervorhebung von mir]