Heim >Java >javaLernprogramm >In welchen Szenarien sind anonyme innere Java-Klassen nicht für den Einsatz geeignet?
Zu den Situationen, in denen anonyme innere Klassen nicht zur Verwendung geeignet sind, gehören: Zugriff auf private Mitglieder, mehrere Instanzen erforderlich, Vererbung erforderlich, Zugriff auf generische Typen erforderlich
Szenarien, in denen anonyme innere Java-Klassen nicht zur Verwendung geeignet sind
Anonyme innere Klassen sind eine bequeme Möglichkeit, innere Klassen zu erstellen, mit denen schnell eine Klasse erstellt werden kann, die eine Schnittstelle implementiert oder eine Klasse bei Bedarf erweitert. Es gibt jedoch Situationen, in denen es nicht angebracht ist, anonyme innere Klassen zu verwenden:
1. Zugriff auf private Mitglieder der äußeren Klasse erforderlich.
Anonyme innere Klassen können nicht auf die privaten Mitglieder der äußeren Klasse zugreifen, was zu Einschränkungen führen kann ihre Verwendung ist in manchen Situationen nützlich. Wenn Sie beispielsweise von einer anonymen inneren Klasse aus auf private Felder oder Methoden einer äußeren Klasse zugreifen müssen, müssen Sie die Zugriffsrechte dieser Mitglieder auf „geschützt“ oder „öffentlich“ heraufstufen, was möglicherweise gegen das Kapselungsprinzip verstößt.
2. Mehrere Instanzen erforderlich
Anonyme innere Klassen sind normalerweise Singletons, was bedeutet, dass nur eine einzige Instanz der Klasse erstellt werden kann. Dies wäre eine Einschränkung, wenn mehrere Instanzen der anonymen inneren Klasse erstellt werden müssten.
3. Vererbung erforderlich
Anonyme innere Klassen können nicht von anderen Klassen erben, was ihre Flexibilität in bestimmten Situationen einschränken kann. Wenn Sie beispielsweise eine anonyme innere Klasse erstellen müssen, die von einer anderen Klasse erbt, ist dies nicht möglich.
4. Zugriff auf generische Typen erforderlich
Anonyme innere Klassen können nicht auf generische Typparameter äußerer Klassen zugreifen. Wenn Sie von einer anonymen inneren Klasse aus auf die generischen Typparameter der äußeren Klasse zugreifen müssen, müssen Sie diese Parameter explizit als Typparameter angeben.
Praktischer Fall:
Betrachten Sie das folgende Beispiel:
// 外部类 public class OuterClass { private int privateField; public void doSomething() { // 创建匿名内部类 Runnable runnable = new Runnable() { @Override public void run() { // 无法访问 privateField System.out.println(privateField); } }; } }
In diesem Fall kann die anonyme innere Klasse nicht auf die privaten Felder der äußeren Klasse zugreifen privateField
, sodass die anonyme innere Klasse nicht zur Verwendung geeignet ist.
Empfohlene Alternativen:
Im obigen Fall können Sie benannte innere Klassen oder statische innere Klassen als Alternative zu anonymen inneren Klassen verwenden. Dies ermöglicht den Zugriff auf private Mitglieder der äußeren Klasse und die Möglichkeit, mehrere Instanzen zu erstellen.
// 外部类 public class OuterClass { private int privateField; public void doSomething() { // 创建带有名称的内部类 class InnerClass implements Runnable { @Override public void run() { // 可以访问 privateField System.out.println(privateField); } } // 创建 InnerClass 的实例 InnerClass innerClass = new InnerClass(); innerClass.run(); } }
Das obige ist der detaillierte Inhalt vonIn welchen Szenarien sind anonyme innere Java-Klassen nicht für den Einsatz geeignet?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!