suchen
HeimJavajavaLernprogrammAnonyme Klassen in Java

Anonyme Klassen in Java

Jan 20, 2025 pm 10:33 PM

Clases anónimas en Java

Anonyme Klassen in Java sind unbenannte Klassen, ideal zum Definieren und Instanziieren von Implementierungen von Klassen oder Schnittstellen in-place, ohne dass zusätzliche Dateien erforderlich sind. Da es nur für den einmaligen Gebrauch bestimmt ist, ist eine Wiederverwendung nicht möglich. Im Gegensatz zu lokalen Klassen (Deklarationen) sind anonyme Ausdrücke, die ein einzelnes Objekt generieren, das einer Variablen zugewiesen werden kann.

Sie sind besonders nützlich, wenn eine Klasse nur einmal verwendet wird, beispielsweise beim Definieren einer bestimmten Methode einer Schnittstelle oder einer abstrakten Klasse. Seine Anwendung kommt häufig in Java Swing mit event listeners oder Lambda-Funktionen (Pfeilfunktionen) vor.

Es ist eine merkwürdige Tatsache, dass der Java-Compiler ihnen automatisch einen Namen zuweist (z. B. ClaseContenedora.class), der aus dem Namen der enthaltenden Klasse und einer Zahl besteht, die ihre Position angibt.

Syntax:

Da es sich um einen Ausdruck handelt, ähnelt seine Syntax dem Aufruf eines Konstruktors, enthält jedoch stattdessen einen Codeblock, der die Struktur der Klasse definiert:

ClaseOInterfaz nombreVariable = new ClaseOInterfaz() {
    // Cuerpo de la clase anónima
};

Die Schlüsselkomponenten sind:

  • Der Operator new.
  • Der Name der zu erweiternden Klasse oder der zu implementierenden Schnittstelle.
  • Klammern mit den Konstruktorargumenten (falls vorhanden), genau wie beim Instanziieren einer normalen Klasse. In Schnittstellen sind Klammern leer.
  • Schlüssel, die den Hauptteil der Klasse sperren.
  • Es wird in einer einzigen Zeile deklariert und instanziiert und in einer Variablen gespeichert.

Arten anonymer Kurse:

  • Erweiterung einer Klasse.
  • Erweiterung einer abstrakten Klasse.
  • Implementierung einer Schnittstelle.
  • Argument einer Methode.

Beispiele:

1. Erweiterung einer Klasse:

public class Carro {
    public void tipoMotor() {
        System.out.println("Motor de combustión interna");
    }
}

public class Main {
    public static void main(String[] args) {
        Carro carroCombustion = new Carro();
        Carro carroElectrico = new Carro() {
            @Override
            public void tipoMotor() {
                System.out.println("Motor eléctrico");
            }
        };
        carroCombustion.tipoMotor(); // Motor de combustión interna
        carroElectrico.tipoMotor(); // Motor eléctrico
    }
}

2. Erweiterung einer abstrakten Klasse:

public abstract class ConexionBD {
    public abstract void obtenerConexion();
}

public class Main {
    public static void main(String[] args) {
        ConexionBD conexionMySQL = new ConexionBD() {
            @Override
            public void obtenerConexion() {
                System.out.println("Conexión a MySQL");
            }
        };
        ConexionBD conexionPostgreSQL = new ConexionBD() {
            @Override
            public void obtenerConexion() {
                System.out.println("Conexión a PostgreSQL");
            }
        };
        conexionMySQL.obtenerConexion(); // Conexión a MySQL
        conexionPostgreSQL.obtenerConexion(); // Conexión a PostgreSQL
    }
}

3. Implementierung einer Schnittstelle:

import java.util.Arrays;
import java.util.Comparator;
import java.util.List;

public class Main {
    public static void main(String[] args) {
        List<Integer> numeros = Arrays.asList(5, 10, 56, 3, 2, 1, 0);
        numeros.sort(new Comparator<Integer>() {
            @Override
            public int compare(Integer o1, Integer o2) {
                return o2 - o1;
            }
        });
        System.out.println(numeros); // [56, 10, 5, 3, 2, 1, 0]
    }
}

4. Argument einer Methode:

public class Main {
    public static void main(String[] args) {
        Thread hilo = new Thread(new Runnable() {
            @Override
            public void run() {
                while (true) {
                    System.out.println("Hola, soy un hilo");
                    try {
                        Thread.sleep(1000);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                }
            }
        });
        hilo.start();
    }
}

Vorteile:

  • Erstellung von Objekten nur dann, wenn sie benötigt werden.
  • Ändern des Verhaltens von Klassen oder Schnittstellen ohne Unterklassen.
  • Prägnanterer und lesbarerer Code.
  • Zeitersparnis durch Vermeidung zusätzlicher Dateien.

Geltungsbereich:

Ähnlich wie bei normalen Klassen, mit Zugriff auf lokale Variablen des Containerbereichs, mit den Einschränkungen, dass keine statischen Initialisierer oder Schnittstellen deklariert werden können, und der Einschränkung des Zugriffs auf nicht endgültige oder effektiv endgültige lokale Variablen.

Fazit:

Anonyme Klassen sind ein leistungsstarkes und vielseitiges Werkzeug in Java, das für einzigartige und prägnante Implementierungen nützlich ist. Seine Verwendung, auch wenn sie manchmal implizit ist, vereinfacht den Code und verbessert die Effizienz. Weitere Informationen finden Sie in der offiziellen Java-Dokumentation.

Das obige ist der detaillierte Inhalt vonAnonyme Klassen in Java. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme
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
Wofür ist Java hauptsächlich? Analyse der Hauptnutzung von Java in der tatsächlichen EntwicklungWofür ist Java hauptsächlich? Analyse der Hauptnutzung von Java in der tatsächlichen EntwicklungMay 16, 2025 pm 02:54 PM

Java wird hauptsächlich zum Erstellen von Desktop-Anwendungen, mobilen Anwendungen, Lösungen auf Unternehmensebene und Big-Data-Verarbeitung verwendet. 1. Anwendungen auf Unternehmensebene: Unterstützen Sie komplexe Anwendungen wie Bankensysteme über Javaee. 2. Webentwicklung: Verwenden Sie Spring und Hibernate, um die Entwicklung zu vereinfachen, und Springboot baut schnell Microservices auf. 3.. Mobile Anwendungen: immer noch eine der Hauptsprachen für die Entwicklung von Android. 4. Big Data Processing: Hadoop- und Funkenprozess massive Daten basierend auf Java. 5. Spielentwicklung: Geeignet für kleine und mittelgroße Spieleentwicklung wie Minecraft.

So setzen Sie Java auf chinesisches Java -Entwicklungstool chinesische Schnittstelle Einstellung TutorialSo setzen Sie Java auf chinesisches Java -Entwicklungstool chinesische Schnittstelle Einstellung TutorialMay 16, 2025 pm 02:51 PM

Wie setze ich Java -Entwicklungstools auf die chinesische Schnittstelle? Es kann in folgenden Schritten implementiert werden: Eclipse: Fenster-> Einstellungen-> Allgemein-> Aussehen-> I18NSupport-> Sprach-> Chinesisch (vereinfacht) und dann die Eclipse neu starten. IntelliJidea: Help-> findAction-> Geben

Wie lange dauert es, Java zu lernen, um zu arbeiten? Java -Lernzyklus und BeschäftigungszeitschätzungenWie lange dauert es, Java zu lernen, um zu arbeiten? Java -Lernzyklus und BeschäftigungszeitschätzungenMay 16, 2025 pm 02:48 PM

Normalerweise dauert es 6 bis 12 Monate, um Java zu lernen und das Arbeitsniveau zu erreichen, und es kann für diejenigen mit einer Programmierfundament auf 3 bis 6 Monate verkürzt werden. 1) Lernende mit Zero Foundation müssen die Grundlagen und die häufig verwendeten Bibliotheken für 6-12 Monate beherrschen. 2) Personen mit Programmierfundament können es innerhalb von 3-6 Monaten beherrschen. 3) Nach 9 bis 18 Monaten Beschäftigung können tatsächliche Projekte und Praktika den Prozess beschleunigen.

Was ist neu in Java? Der Speicherzuweisungsvorgang des neuen OperatorsWas ist neu in Java? Der Speicherzuweisungsvorgang des neuen OperatorsMay 16, 2025 pm 02:45 PM

In Java wird der neue Operator verwendet, um ein Objekt zu erstellen, und seine Prozesse umfassen: 1) Zuordnen des Raums im Heap -Speicher, 2) Initialisierung des Objekts, 3) Aufrufen des Konstruktors und 4) die Rückgabe der Objektreferenz. Das Verständnis dieser Schritte kann dazu beitragen, die Speicherverwendung zu optimieren und die Anwendungsleistung zu verbessern.

So definieren Sie Arrays in der Java -Syntax -Formatbeschreibung der Array -DeklarationSo definieren Sie Arrays in der Java -Syntax -Formatbeschreibung der Array -DeklarationMay 16, 2025 pm 02:42 PM

Die Syntax zum Definieren eines Array in Java lautet: 1. Datentyp [] Array name = neuer Datentyp [Array -Länge]; 2. Datentyp -Array -Name [] = neuer Datentyp [Array -Länge]; 3. Datentyp [] Array name = {Elementliste}; Array ist ein Objekt, kann null sein, und das Index startet ab 0. Bei der Verwendung müssen Sie auf potenzielle Fehler wie NullPointerexception und ArrayIndexoutOfBoundSexception achten.

Verwendung neuer Schlüsselwörter in Java detaillierte Erläuterung zum Erstellen von Objektinstanzen neuer SchlüsselwörterVerwendung neuer Schlüsselwörter in Java detaillierte Erläuterung zum Erstellen von Objektinstanzen neuer SchlüsselwörterMay 16, 2025 pm 02:39 PM

Das neue Schlüsselwort wird in Java verwendet, um Objektinstanzen zu erstellen. 1) Es wird dem JVM angegeben, Speicher zuzuweisen und den Konstruktor aufzurufen, um das Objekt zu initialisieren. 2) Verwenden Sie Neue, um neue Objekte zum Erstellen zu zwingen, auch wenn der Inhalt gleich ist. 3) Der Konstruktor ermöglicht eine benutzerdefinierte Initialisierung. 4) Häufige Verwendung neuer Verwendung kann zu Leistungsproblemen und Speicherlecks führen. 5) Es ist erforderlich, Try-Catch zu verwenden, um mögliche Ausnahmen zu verarbeiten. 6) Anonyme interne Klassen sind eine fortgeschrittene Verwendung von neu.

Java Chinesische verstümmte Lösung Mehrere Fähigkeiten für die Charakter -CodierungsumwandlungJava Chinesische verstümmte Lösung Mehrere Fähigkeiten für die Charakter -CodierungsumwandlungMay 16, 2025 pm 02:36 PM

Um das Problem der in Java verstümmelten Chinesen zu lösen, können Sie die folgenden Schritte verwenden: 1. Legen Sie die korrekte Zeichenkodierung wie UTF-8 oder GBK fest, um sicherzustellen, dass die Datei-, Datenbank- und Netzwerkkommunikation dieselbe Codierung verwendet. 2. Verwenden Sie Javas Charaktercodierungskonvertierungsklasse, um die notwendige Codierungskonvertierung durchzuführen. 3. Überprüfen Sie, ob die Codierung durch Debugging -Tools und -protokolle korrekt ist, um sicherzustellen, dass die chinesische Anzeige in verschiedenen Umgebungen normal ist.

Was sind die beiden Kategorien von Ausnahmen in Java? Der Unterschied zwischen überprüften und nicht überprüften AusnahmenWas sind die beiden Kategorien von Ausnahmen in Java? Der Unterschied zwischen überprüften und nicht überprüften AusnahmenMay 16, 2025 pm 02:33 PM

Ausnahmen in Java werden in überprüfte Ausnahmen und nicht überprüfte Ausnahmen unterteilt. Ausnahmen vom Typ Check-Typ müssen explizit behandelt werden. Andernfalls meldet der Compiler einen Fehler, der häufig zur Wiederherstellung von Fehlern verwendet wird, z. B. eine nicht gefundene Datei. Nicht überprüfte Ausnahmen müssen nicht explizit behandelt werden und werden häufig für Programmierfehler verwendet, wie z. B. eine Null-Zeiger-Ausnahme.

See all articles

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

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heißer Artikel

Nordhold: Fusionssystem, erklärt
1 Monate vorBy尊渡假赌尊渡假赌尊渡假赌
Mandragora: Flüstern des Hexenbaum
4 Wochen vorBy尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

VSCode Windows 64-Bit-Download

VSCode Windows 64-Bit-Download

Ein kostenloser und leistungsstarker IDE-Editor von Microsoft

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

Leistungsstarke integrierte PHP-Entwicklungsumgebung