So implementieren Sie eine anonyme Klasse in Java



In diesem Blog erhalten Sie detaillierte und umfassende Kenntnisse der anonymen Klasse in Java mit Beispielen und den Unterschieden zu einer regulären Klasse.

Mit anonymen Klassen können Sie kleinen Code schreiben und gleichzeitig Klassen deklarieren und instanziieren. Diese Klassen haben keine Namen. Sie werden verwendet, wenn Sie eine Klasse nur einmal verwenden möchten. Dies ist ein wichtiger Aspekt der Java-Programmierung. Lassen Sie uns in der folgenden Reihenfolge verstehen, was eine anonyme Klasse in Java ist:

Anonyme Klassen deklarieren





SQL Server Tutorial für Anfänger mit Beispielen

Normalerweise erstellen wir eine Klasse, d. H. Wir deklarieren eine Klasse, aber anonyme Klassen sind Ausdrücke, was bedeutet, dass wir die anonyme Klasse in einer anderen definieren Ausdruck . Mit einfachen Worten, die anonyme innere Klasse ist eine Klasse ohne Namen und es wird nur ein Objekt erstellt.

Anonymous-Class-In-Java



Anonyme Klasse ist nützlich, wenn wir eine Instanz des Objekts mit Überladungsmethoden einer Klasse oder Schnittstelle erstellen müssen, ohne eine Unterklasse von Klassen zu erstellen.

Anonym kann auf zwei Arten erstellt werden:

  • Klasse (kann auch abstrakt sein)
  • Schnittstelle

In der anonymen Klasse können wir Folgendes deklarieren:



  • Felder
  • Zusätzliche Methoden
  • Instanzinitialisierer
  • Lokale Klassen

Syntax der anonymen Klasse in Java

Die Syntax einer anonymen Klasse ähnelt der eines Konstruktors, außer dass der Block eine Klassendefinition enthält, wie im folgenden Snippet gezeigt:

// AnonymousClass = Schnittstelle, abstrakte / konkrete Klasse. AnonymousClass t = new AnonymousClass () {// Methoden und Felder public void someMethod () {// Code geht hierher}}

Schauen wir uns das folgende Beispiel an:

Das folgende Beispiel:HelloAnonymousClass, verwendet anonyme Klassen in den Initialisierungsanweisungen der lokalen Variablenjemanden grüßenVerwendet jedoch eine lokale Klasse für die Initialisierung der VariablengreetWorld::

öffentliche Klasse HelloAnonymousClass {Schnittstelle HelloWorld {öffentliche Leere sayHello () öffentliche Leere sayHelloTo (String jemandem)} öffentliche Leere sayHello () {Klasse GreetWorld implementiert HelloWorld {String name = 'Welt' öffentliche Leere sayHello () {sayHelloTo ('Welt')} public void sayHelloTo (String jemandem) {name = jemand System.out.println ('Hallo' + Name)}} HelloWorld greetWorld = new GreetWorld () HelloWorld greetSomeone = new HelloWorld () {String name = 'jon' public void sayHello ( ) {sayHelloTo ('Jon')} public void sayHelloTo (String jemandem) {name = jemand System.out.println ('hola' + name)}} greetWorld.sayHello () greetSomeone.sayHelloTo ('Doe')} public static void main (String ... args) {HelloAnonymousClass myApp = new HelloAnonymousClass () myApp.sayHello ()}}

Wie wir gesehen haben, dass anonyme Klasse ein Ausdruck ist, ist die Syntax genau wie Konstruktor, außer dass der Block eine Klassendefinition enthält. Betrachten Sie die Instanziierung des greetSomeone-Objekts:

HelloWorld greetSomeone = new HelloWorld () {String name = 'jon' public void sayHello () {sayHelloTo ('Jon')} public void sayHelloTo (String jemandem) {name = jemand System.out.println ('hola' + name) }}

Die anonyme Klasse besteht aus folgenden Elementen:

  • neuer Betreiber.
  • Es kann eine Schnittstelle implementieren oder eine Klasse erweitern. Wie im obigen Beispiel wird die Schnittstelle implementiert.
  • Es enthält wie normale Klassen Klammern, um Argumente an den Konstruktor zu übergeben.
  • Enthält einen Text, der Methodendeklarationen enthält. Erklärungen sind nicht erlaubt.

Anonyme Klasse sollte Teil von Anweisungen sein.

Im obigen Beispiel ist der anonyme Klassenausdruck Teil der Anweisung, die von initiiert wirdjemanden grüßen.

Möglichkeiten zum Erstellen einer anonymen Klasse in Java

Es gibt drei Möglichkeiten, eine innere Klasse in Java zu erstellen

  • Durch Erweitern der Klasse

Wir können eine anonyme innere Klasse erstellen, indem wir eine andere Klasse erweitern. Angenommen, wir müssen einen Thread mithilfe der Thread-Klasse erstellen. Wir können eine anonyme innere Klasse erstellen, anstatt eine separate Klasse zu erstellen.

// Programm zur Veranschaulichung der anonymen inneren Klasse durch Erweiterung einer anderen Klassenklasse AnonymousThreadClass {public static void main (String [] args) {// Anonyme innere Klasse, die die Thread-Klasse erweitert Thread t = new Thread () {public void run () {System .out.println ('Child!')}} t.start () System.out.println ('Parent!')}}

Ausgabe:

Elternteil!

Java flache Kopie vs tiefe Kopie

Kind!

  • Durch die Implementierung der Schnittstelle

Wir können auch eine anonyme innere Klasse erstellen, indem wir die Schnittstelle implementieren. Wenn wir nun eine innere Klasse erstellen, indem wir die Klasse auf ähnliche Weise erweitern, können wir eine Klasse erstellen, die eine Schnittstelle implementiert.

// Programm zur Veranschaulichung der anonymen inneren Klasse durch Implementierung der Schnittstellenklasse AnonymousThreadClass {public static void main (String [] args) {// Anonyme innere Klasse, die die Schnittstelle Runnable r = new Runnable () {public void run () {System.out implementiert .println ('Child!')}} Thread t = neuer Thread (r) t.start () System.out.println ('Parent!')}}

Ausgabe:

Elternteil!

Kind!

  • Als Argument für eine Methode / einen Konstruktor

Um die Syntax zu verstehen, sehen wir uns das folgende Beispiel an:

// Programm zur Veranschaulichung der anonymen inneren Klasse durch die Argumentklasse AnonymousThreadClass {public static void main (String [] args) {// Anonyme Klasse mit Konstruktorargument Thread t = neuer Thread (new Runnable () {public void run () {System. out.println ('Child!')}}) t.start () System.out.println ('Parent!')}}

Ausgabe:

Elternteil!

Java, wie man ein Objekt klont

Kind!

Unterschied zwischen regulärer und anonymer innerer Klasse

  • Wir können umsetzen mehrere Anzahlen von Schnittstellen Durch die Verwendung einer normalen Klasse, aber mit einer anonymen inneren Klasse können wir nur eine Schnittstelle implementieren.

  • Mit regulärem Unterricht können wir eine Klasse erweitern und auch mehrere Schnittstellen implementieren, aber mit einer anonymen inneren Klasse können wir entweder eine Klasse erweitern oder eine Schnittstelle implementieren, aber nicht beide gleichzeitig.

  • Mit anonymem wir Konstruktor kann nicht geschrieben werden da die anonyme innere Klasse keinen Namen hat und der Name des Konstruktors mit dem Klassennamen identisch sein sollte.

In diesem Artikel haben wir gesehen, was eine anonyme innere Klasse ist und wie wir eine erstellen können. Wir haben die Syntax der anonymen inneren Klasse durchgearbeitet und auch, wie wir eine anonyme Klasse auf drei Arten erstellen können. Damit sind wir am Ende dieses Artikels über anonyme Klassen in Java angelangt. Besuche die von Edureka.

Hast du eine Frage? Erwähnen Sie es im Kommentarbereich dieses Artikels und wir werden uns so schnell wie möglich bei Ihnen melden.