Ich habe versucht, den Code Sun auf ihre Proxy usage page geschrieben, und ich habe versucht, den DebugProxy zu verwenden, welche Methode aufgerufen wird. Die Sache ist, das Objekt, für das ich einen Proxy erstelle, muss ein Argument haben. Wenn ich versuche, den Proxy mit einem Argument an den Konstruktor zu erstellen, erhalte ich folgende Fehlermeldung:Wie kann ich einen dynamischen Proxy für Konstruktoren verwenden, die Argumente verwenden?
Exception in thread "main" java.lang.ClassCastException: $Proxy0 cannot be cast to myPackage.myClass
ich den Proxy wie folgt erstellt:
MyClass mc = (MyClass) DebugProxy.newInstance(new MyClass(props));
Wie kann ich einen Proxy-Instanz erstellen, und Rufen Sie immer noch den richtigen Konstruktor an?
ja. das ist scheiße :). Ich hatte gehofft, DynamicProxy wäre eine schnelle Möglichkeit, dies zu tun. – Geo
Diese Art von Proxy ist immer schnittstellenbasiert, aber andere Proxy-Generierungsbibliotheken können Ihre Klassentypen direkt übernehmen. Zum Beispiel kann CGLIB dies tun, und wenn Sie CGLIB-Proxying über Spring's ProxyFactory verwenden, ist es urkomisch einfach. Die ProxyFactory von Spring kann entweder JDK-Proxies oder CGLIB-Proxies generieren, was eine nützliche Abstraktion darstellt. – skaffman