Was ist eine anonyme innere Klasse?

In der objektorientierten Computerprogrammierung ist eine anonyme innere Klasse eine Klasse, die innerhalb einer Methode deklariert ist, aber keinen Namen hat. Eine anonyme innere Klasse weist verschiedene Einschränkungen auf, die sie von einer normalen Klasse unterscheiden, einschließlich einer Einschränkung des Bereichs der Variablen, auf die zugegriffen werden kann. Es gibt einige sehr spezielle Situationen, in denen die Verwendung einer anonymen inneren Klasse die Lesbarkeit des Quellcodes verbessern kann. Sie wird jedoch hauptsächlich verwendet, um die Kapselung zu erzwingen, wenn die Erzeugung separater Klassen dies erschweren könnte.

Kapselung ist das Konzept in der objektorientierten Programmierung (OOP), dass ein Objekt und seine Komponenten auf irgendeine Weise geschützt und an das Objekt gebunden werden sollen. Anonyme innere Klassen und innere Klassen im Allgemeinen helfen dabei, die Kapselung für besonders komplexe Objekte zu realisieren. Anstatt eine Klasse zu erstellen, die sich auf eine separate externe Klasse stützt, diese künstlich zusammenfügt und möglicherweise einige der Komponenten freigibt, kann eine anonyme innere Klasse die beiden Klassen fest miteinander verbinden.

In einigen Programmiersprachen kann eine anonyme innere Klasse dazu beitragen, die Einschränkungen der Einzelvererbung zu überwinden. Wenn ein Objekt von einer Klasse erbt, dann aber auf eine andere zugreifen muss, kann im laufenden Betrieb eine innere Klasse generiert und dann an die entsprechenden Handler übergeben werden. Diese Technik ist bei Rückrufen und Ereignis-Listenern üblich. Die einzige Alternative wäre, eine ganze zweite Klasse zu erstellen, in der nur eine oder zwei Methoden überschrieben werden.

Anonyme innere Klassen haben einige Einschränkungen, um das Brechen der Kapselung zu verhindern und den Geltungsbereich zu erzwingen. Die primäre Einschränkung besteht darin, dass eine anonyme innere Klasse nur dann auf Variablen der Methode zugreifen kann, in der sie sich befindet, wenn diese Variablen als final deklariert sind. Dies liegt daran, dass die innere Klasse über das Leben der Klasse und der Methode, in der sie sich befindet, hinaus weiter funktionieren könnte. Die Variablen der Wrapping-Klasse würden nach Ablauf ihres Lebens zerstört, sodass die Referenzen der inneren Klasse sofort ungültig würden. Die einzige Ausnahme ist eine endgültige Variable, da sie über die Instanz hinaus existiert.

Eine der spezifischeren Verwendungen für eine anonyme innere Klasse ist der Codeschutz. Viele OOP-Sprachen sehen einen Mechanismus vor, der als Reflektion bezeichnet wird. Reflection ermöglicht es einem Programm, eine andere Klasse zu zerlegen und zu sehen, was ihre Mitgliedsvariablen und -methoden sind, aber nicht den Code selbst. Durch die Verwendung einer anonymen inneren Klasse wird der Inhalt der inneren Klasse vor Reflexion geschützt und das Innenleben der größeren Klasse kann effektiv verborgen werden.

ANDERE SPRACHEN

War dieser Artikel hilfreich? Danke für die Rückmeldung Danke für die Rückmeldung

Wie können wir helfen? Wie können wir helfen?