Heim Java javaLernprogramm Zusammenfassung anonymer innerer Klassen in Java

Zusammenfassung anonymer innerer Klassen in Java

Dec 15, 2016 pm 12:19 PM
anonyme innere Klasse

Anonyme innere Klassen sind auch innere Klassen ohne Namen

Da sie keine Namen haben, können anonyme innere Klassen nur einmal verwendet werden. Sie werden normalerweise verwendet, um das Schreiben von Code zu vereinfachen

Verwenden Sie jedoch anonym Innere Klassen Es gibt auch eine Voraussetzung für eine Klasse: Sie muss eine übergeordnete Klasse erben oder eine Schnittstelle implementieren

Beispiel 1: Verwenden Sie keine anonymen inneren Klassen, um abstrakte Methoden zu implementieren

abstract class Person {
    public abstract void eat();
}
 
class Child extends Person {
    public void eat() {
        System.out.println("eat something");
    }
}
 
public class Demo {
    public static void main(String[] args) {
        Person p = new Child();
        p.eat();
    }
}
Nach dem Login kopieren

run-Ergebnis: etwas essen

Wie Sie sehen können, haben wir die Person-Klasse mit Child geerbt, dann eine Instanz von Child implementiert und sie in einen Verweis auf die Person-Klasse umgewandelt

Wenn hier jedoch die Child-Klasse nur einmal verwendet wird, wäre es dann nicht mühsam, sie als unabhängige Klasse zu schreiben?

Zu diesem Zeitpunkt wurden anonyme innere Klassen eingeführt

Beispiel 2: Grundlegende Implementierung anonymer innerer Klassen

abstract class Person {
    public abstract void eat();
}
 
public class Demo {
    public static void main(String[] args) {
        Person p = new Person() {
            public void eat() {
                System.out.println("eat something");
            }
        };
        p.eat();
    }
}
Nach dem Login kopieren

Laufergebnis: Etwas essen

Wie Sie sehen, implementieren wir die Methoden direkt in der abstrakten Klasse Person in geschweiften Klammern

Auf diese Weise können wir das Schreiben einer Klasse weglassen

Außerdem anonyme innere Klassen können auch auf Schnittstellen verwendet werden

Beispiel 3: Verwendung anonymer innerer Klassen auf Schnittstellen

interface Person {
    public void eat();
}
 
public class Demo {
    public static void main(String[] args) {
        Person p = new Person() {
            public void eat() {
                System.out.println("eat something");
            }
        };
        p.eat();
    }
}
Nach dem Login kopieren

Ergebnisse ausführen: etwas essen

Aus dem oben Wie aus dem Beispiel ersichtlich ist, können die Methoden in ihren Unterklassen mithilfe anonymer innerer Klassen implementiert werden, solange eine Klasse abstrakt oder eine Schnittstelle ist.

Die häufigste Situation ist die Multithread-Implementierung. weil Um Multithreading zu implementieren, müssen Sie die Thread-Klasse oder die Runnable-Schnittstelle erben

Beispiel 4: Anonyme innere Klassenimplementierung der Thread-Klasse

public class Demo {
    public static void main(String[] args) {
        Thread t = new Thread() {
            public void run() {
                for (int i = 1; i <= 5; i++) {
                    System.out.print(i + " ");
                }
            }
        };
        t.start();
    }
}
Nach dem Login kopieren

Running Ergebnisse: 1 2 3 4 5

Beispiel 5: Anonyme innere Klassenimplementierung der Runnable-Schnittstelle

public class Demo {
    public static void main(String[] args) {
        Runnable r = new Runnable() {
            public void run() {
                for (int i = 1; i <= 5; i++) {
                    System.out.print(i + " ");
                }
            }
        };
        Thread t = new Thread(r);
        t.start();
    }
}
Nach dem Login kopieren

Laufende Ergebnisse: 1 2 3 4 5

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Wie man alles in Myrise freischaltet
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Wie löst die anonyme innere Java-Klasse das Problem des Speicherverlusts? Wie löst die anonyme innere Java-Klasse das Problem des Speicherverlusts? May 01, 2024 pm 10:30 PM

Anonyme innere Klassen können Speicherlecks verursachen. Das Problem besteht darin, dass sie einen Verweis auf die äußere Klasse enthalten und so verhindern, dass die äußere Klasse durch Müll gesammelt wird. Zu den Lösungen gehören: 1. Verwenden Sie schwache Referenzen, wenn die externe Klasse nicht mehr von einer starken Referenz gehalten wird. 2. Verwenden Sie weiche Referenzen Benötigt Speicher während der Garbage Collection. Nur dann wird das Soft-Referenzobjekt recycelt. Im tatsächlichen Kampf, beispielsweise in Android-Anwendungen, kann das durch anonyme innere Klassen verursachte Speicherleckproblem durch die Verwendung schwacher Referenzen gelöst werden, sodass die anonyme innere Klasse recycelt werden kann, wenn der Listener nicht benötigt wird.

Was sind die Entwurfsmuster für anonyme innere Klassen in Java? Was sind die Entwurfsmuster für anonyme innere Klassen in Java? May 02, 2024 pm 04:42 PM

Anonyme innere Klassen sind spezielle innere Klassen in Java, die keinen expliziten Namen haben und durch den neuen Ausdruck erstellt werden. Sie werden hauptsächlich zum Implementieren bestimmter Schnittstellen oder zum Erweitern abstrakter Klassen verwendet und unmittelbar nach der Erstellung verwendet. Zu den gängigen Entwurfsmustern für anonyme innere Klassen gehören: Adaptermuster: Konvertiert eine Schnittstelle in eine andere Schnittstelle. Strategiemuster: Algorithmen definieren und ersetzen. Beobachtermuster: Beobachter registrieren und Ereignisse verarbeiten. Dies ist in praktischen Anwendungen sehr nützlich, z. B. beim Sortieren eines TreeSet nach Zeichenfolgenlänge, beim Erstellen anonymer Threads usw.

Was sind die Vorteile anonymer innerer Klassen in Java? Was sind die Vorteile anonymer innerer Klassen in Java? Apr 30, 2024 am 11:39 AM

Anonyme innere Klassen werden in Java als spezielle innere Klassen verwendet, die die Unterklassenbildung, die Vereinfachung von Code und die Verarbeitung von Ereignissen (z. B. Schaltflächenklicks) erleichtern. Zu den praktischen Fällen gehören: Ereignisbehandlung: Verwenden Sie anonyme innere Klassen, um Klickereignis-Listener für Schaltflächen hinzuzufügen. Datentransformation: Sortieren Sie Sammlungen mithilfe der Collections.sort-Methode und einer anonymen inneren Klasse als Komparator.

Was sind die häufigsten Fehler bei anonymen inneren Klassen in Java? Was sind die häufigsten Fehler bei anonymen inneren Klassen in Java? May 02, 2024 am 09:03 AM

Fehler bei der Verwendung anonymer innerer Klassen: Zugriff auf eine Variable außerhalb des Gültigkeitsbereichs durch Abfangen einer nicht deklarierten Ausnahme in einer nicht threadsicheren Umgebung

Wie kann die Leistung anonymer innerer Java-Klassen optimiert werden? Wie kann die Leistung anonymer innerer Java-Klassen optimiert werden? May 02, 2024 am 08:48 AM

Das Leistungsproblem anonymer innerer Klassen besteht darin, dass sie bei jeder Verwendung neu erstellt werden. Dies kann durch die folgenden Strategien optimiert werden: 1. Anonyme innere Klassen in lokalen Variablen speichern. 2. Nicht statische innere Klassen verwenden Ausdrücke. Praxistests zeigen, dass die Optimierung des Lambda-Ausdrucks die beste Wirkung erzielt.

In welchen Szenarien sind anonyme innere Java-Klassen nicht für den Einsatz geeignet? In welchen Szenarien sind anonyme innere Java-Klassen nicht für den Einsatz geeignet? May 03, 2024 pm 05:42 PM

Anonyme innere Klassen eignen sich nicht für den Einsatz, wenn auf private Mitglieder zugegriffen werden muss, mehrere Instanzen erforderlich sind, Vererbung erforderlich ist oder auf generische Typen zugegriffen werden muss

Was ist der Lebenszyklus anonymer innerer Java-Klassen? Was ist der Lebenszyklus anonymer innerer Java-Klassen? May 01, 2024 pm 04:06 PM

Die Lebensdauer einer anonymen inneren Klasse wird durch ihren Geltungsbereich bestimmt: Methodenlokale innere Klasse: Nur innerhalb des Geltungsbereichs der Methode gültig, die sie erstellt hat. Konstruktor der inneren Klasse: An die Instanz der äußeren Klasse gebunden und freigegeben, wenn die Instanz der äußeren Klasse freigegeben wird. Statische innere Klassen: werden gleichzeitig mit externen Klassen geladen und entladen.

Wie werden anonyme innere Java-Klassen auf Threads angewendet? Wie werden anonyme innere Java-Klassen auf Threads angewendet? May 02, 2024 pm 01:57 PM

Anonyme innere Klassen vereinfachen die Erstellung von Multithread-Code, machen eine Benennung überflüssig und ermöglichen die sofortige Definition und Verwendung von Thread-Klassen. Der Hauptvorteil besteht in der Vereinfachung des Codes, die Einschränkung besteht jedoch darin, dass er nicht erweitert werden kann. Verwenden Sie diese Option, wenn Sie schnell einen oder zwei Threads erstellen müssen. Halten Sie den Code kurz. Wenn eine komplexere Logik erforderlich ist, sollte eine separate Klassendatei erstellt werden.

See all articles