Java: So funktionieren dynamische Proxys

Seit Java SE 1.3 gibt es dynamische Proxys (englisch natürlich „proxies“ geschrieben). Die Javadoc für die Proxy-Klasse definiert sie so: „Eine Klasse dynamischer Proxys ist eine Klasse, die eine Liste von zur Laufzeit spezifizierten Schnittstellen implementiert, wenn die Klasse erzeugt wird.“

Dynamische Proxys bestehen aus zwei Teilen: dem „Invocation-Handler“ und der „Proxy-Instanz“. Der Invocation-Handler ist eine Klasse, die die Schnittstelle java.lang.reflect.InvocationHandler implementiert. Diese Klasse erledigt die Aufgaben, die von den durch die Proxy-Instanz definierten Schnittstellen angefragt werden, oder leitet sie weiter. Die Proxy-Instanz hingegegen ist ein Objekt. Es wird der Methode übergeben, die den zu emulierenden Typ anfordert.

Um einen Proxy zu erstellen, kommt die statische Methode newProxyInstance() der Proxy-Klasse zum Einsatz. Diese Methode akzeptiert drei Argumente: eine Instanz von ClassLoader, ein Array von Klassen-Instanzen sowie eine Instanz von InvocationHandler. Das Array bestimmt, welche Schnittstellen die neue Proxy-Instanz implementieren soll. Der Invocation-Handler wird aufgerufen, wenn es um Methoden für die Proxy-Instanz geht.

Das folgende einfache Beispiel erzeugt eine Klasse zur Laufzeit, die entweder das java.lang.Runnable oder die lokal definierte Publisher-Schnittstelle implementiert:

Es gibt allerdings eine Einschränkung: Nur Schnittstellen können über einen Proxy delegiert werden. Wird versucht, einen Proxy für einen anderen Typ als eine Schnittstelle zu erstellen, löst das einen Ausnahmefehler aus, ähnlich diesem:


Exception in thread "main" java.lang.IllegalArgumentException:
java.lang.String is not an interface

Der Leistungsfähigkeit von dynamischen Proxys sind nur durch den eigenen Erfindungsreichtum und die zur Verfügung stehenden Schnittstellen Grenzen gesetzt. Für weitere Informationen darüber, was es beim Einsatz von Proxys zu beachten gibt, findet man in der Javadoc.

ZDNet.de Redaktion

Recent Posts

Studie: Ein Drittel aller E-Mails an Unternehmen sind unerwünscht

Der Cybersecurity Report von Hornetsecurity stuft 2,3 Prozent der Inhalte gar als bösartig ein. Die…

2 Tagen ago

HubPhish: Phishing-Kampagne zielt auf europäische Unternehmen

Die Hintermänner haben es auf Zugangsdaten zu Microsoft Azure abgesehen. Die Kampagne ist bis mindestens…

3 Tagen ago

1. Januar 2025: Umstieg auf E-Rechnung im B2B-Geschäftsverkehr

Cloud-Plattform für elektronische Beschaffungsprozesse mit automatisierter Abwicklung elektronischer Rechnungen.

3 Tagen ago

Google schließt schwerwiegende Sicherheitslücken in Chrome 131

Mindestens eine Schwachstelle erlaubt eine Remotecodeausführung. Dem Entdecker zahlt Google eine besonders hohe Belohnung von…

3 Tagen ago

Erreichbarkeit im Weihnachtsurlaub weiterhin hoch

Nur rund die Hälfte schaltet während der Feiertage komplett vom Job ab. Die anderen sind…

4 Tagen ago

Hacker missbrauchen Google Calendar zum Angriff auf Postfächer

Security-Experten von Check Point sind einer neuen Angriffsart auf die Spur gekommen, die E-Mail-Schutzmaßnahmen umgehen…

5 Tagen ago