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

Windows 10 und 11: Microsoft behebt Problem mit VPN-Verbindungen

Es tritt auch unter Windows Server auf. Seit Installation der April-Patches treten Fehlermeldungen bei VPN-Verbindungen…

5 Stunden ago

Portfoliomanagement Alfabet öffnet sich für neue Nutzer

Das neue Release soll es allen Mitarbeitenden möglich machen, zur Ausgestaltung der IT beizutragen.

8 Stunden ago

Gefahren im Foxit PDF-Reader

Check Point warnt vor offener Schwachstelle, die derzeit von Hackern für Phishing ausgenutzt wird.

4 Tagen ago

Bitdefender entdeckt Sicherheitslücken in Überwachungskameras

Video-Babyphones sind ebenfalls betroffen. Cyberkriminelle nehmen vermehrt IoT-Hardware ins Visier.

4 Tagen ago

Top-Malware in Deutschland: CloudEye zurück an der Spitze

Der Downloader hat hierzulande im April einen Anteil von 18,58 Prozent. Im Bereich Ransomware ist…

4 Tagen ago

Podcast: „Die Zero Trust-Architektur ist gekommen, um zu bleiben“

Unternehmen greifen von überall aus auf die Cloud und Applikationen zu. Dementsprechend reicht das Burg-Prinzip…

5 Tagen ago