Laut Dokumentation :
[
java.lang.reflect.
]Proxy
bietet statische Methoden zum Erstellen dynamischer Proxyklassen und -instanzen und ist außerdem die Oberklasse aller dynamischen Proxyklassen, die mit diesen Methoden erstellt wurden.
Die newProxyMethod
Methode (die für die Generierung der dynamischen Proxys verantwortlich ist) hat die folgende Signatur:
public static Object newProxyInstance(ClassLoader loader,
Class<?>[] interfaces,
InvocationHandler h)
throws IllegalArgumentException
Leider verhindert man von einem dynamischen Proxy erzeugen , die sich eine bestimmte abstrakte Klasse ( und nicht der Umsetzung spezifische Schnittstellen). Dies ist sinnvoll, wenn java.lang.reflect.Proxy
man bedenkt, dass es sich um die "Oberklasse aller dynamischen Proxys" handelt, wodurch verhindert wird, dass eine andere Klasse die Oberklasse ist.
Gibt es daher Alternativen dazu java.lang.reflect.Proxy
, die dynamische Proxys generieren können, die von einer bestimmten abstrakten Klasse erben und alle Aufrufe der abstrakten Methoden an den Aufrufhandler umleiten ?
Angenommen, ich habe eine abstrakte Klasse Dog
:
public abstract class Dog {
public void bark() {
System.out.println("Woof!");
}
public abstract void fetch();
}
Gibt es eine Klasse, in der ich Folgendes tun kann?
Dog dog = SomeOtherProxy.newProxyInstance(classLoader, Dog.class, h);
dog.fetch(); // Will be handled by the invocation handler
dog.bark(); // Will NOT be handled by the invocation handler