2009-04-23 19 views
10

Rozumiem, jak używać Dynamic Proxies w Javie, ale nie rozumiem, jak wirtualna maszyna faktycznie tworzy dynamiczny serwer proxy. Czy generuje kod bajtowy i ładuje go? Albo coś innego? Dzięki.Jak działa dynamiczny serwer proxy Java?

+1

James, jesteś jak guru Java. Czy właśnie testowałeś nas tym pytaniem? – erickson

+0

Haha. Znam język Java, ale nie jestem prawdziwym ekspertem od VM. :) –

Odpowiedz

12

Przynajmniej dla realizacji Sun, jeśli spojrzeć na kod źródłowy java.lang.reflect.Proxy zobaczysz, że tak, to generuje kod bajtowy on-the-fly (przy użyciu klasy sun.misc.ProxyGenerator) .

5

Proponuję lekturę Dynamic Proxy Classes:

Sposób Proxy.getProxyClass zwraca obiekt java.lang.Class dla danej klasy proxy ładowarka klasy oraz szereg interfejsów. Klasa proxy zostanie zdefiniowana w określonej ładowarce klasy i zaimplementuje wszystkie dostarczone interfejsy . Jeśli klasa proxy dla tej samej permutacji interfejsów została już zdefiniowana w programie ładującym klasy , wówczas zostanie zwrócona istniejąca klasa proxy ; w przeciwnym razie klasa proxy dla tych interfejsów będzie wygenerowana dynamicznie i zdefiniowana w program ładujący klasy. [podkr]

Powiązane problemy