Laut Dokumentation :
[
java.lang.reflect.]Proxybietet statische Methoden zum Erstellen dynamischer Proxyklassen und -instanzen und ist außerdem die Oberklasse aller dynamischen Proxyklassen, die mit diesen Methoden erstellt wurden.
Die newProxyMethodMethode (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.Proxyman 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