Java - Anonymous Classes
Hallo zusammen, zukünftige Java-Zauberer! Heute werden wir eine aufregende Reise in die Welt der Anonymous Classes in Java antreten. Machen Sie sich keine Sorgen, wenn Sie neu im Programmieren sind; ich werde Sie Schritt für Schritt durch dieses Konzept führen, mit vielen Beispielen und Erklärungen. Also, tauchen wir ein!
Was sind Anonymous Classes?
Stellen Sie sich vor, Sie sind auf einer Maskerade. Jeder trägt eine Maske, und Sie können nicht erkennen, wer wer ist. Das ist ein bisschen so wie anonyme Klassen in Java - sie sind namenlose Klassen, die hinter einer Maske aus Code versteckt sind!
Eine anonyme Klasse ist eine besondere Art von innerer Klasse, die keinen Namen hat. Sie wird in einem Ausdruck mit dem new
-Schlüsselwort deklariert und instantiiert.
Warum verwendet man Anonymous Classes?
- Sie sind großartig für den einmaligen Gebrauch.
- Sie helfen, Ihren Code kompakt zu halten.
- Sie sind perfekt zum Implementieren einfacher Schnittstellen oder zum Erweitern von Klassen auf die Schnelle.
Wie definiert man eine Anonymous Class
Lassen Sie mit einem einfachen Beispiel beginnen:
interface Greeting {
void greet();
}
public class AnonymousClassDemo {
public static void main(String[] args) {
Greeting englishGreeting = new Greeting() {
@Override
public void greet() {
System.out.println("Hello, World!");
}
};
englishGreeting.greet();
}
}
In diesem Beispiel haben wir eine anonyme Klasse erstellt, die die Greeting
-Schnittstelle implementiert. Lassen Sie es auseinandernehmen:
- Wir definieren eine einfache
Greeting
-Schnittstelle mit einer Methode,greet()
. - In der
main
-Methode erstellen wir eine Instanz vonGreeting
mit einer anonymen Klasse. - Die anonyme Klasse bietet eine Implementierung für die
greet()
-Methode. - Wir rufen die
greet()
-Methode auf unseremenglishGreeting
-Objekt auf.
Wenn Sie diesen Code ausführen, wird "Hello, World!" in der Konsole ausgegeben.
Arten von Anonymous Inner Classes in Java
Es gibt drei Hauptarten von anonymen inneren Klassen in Java:
- Anonyme Klasse, die eine Klasse erweitert
- Anonyme Klasse, die eine Schnittstelle implementiert
- Anonyme Klasse, die innerhalb eines Methoden-/Konstruktorarguments definiert ist
Schauen wir uns Beispiele für jede Art an:
1. Anonyme Klasse, die eine Klasse erweitert
abstract class Animal {
abstract void makeSound();
}
public class AnonymousClassExtend {
public static void main(String[] args) {
Animal dog = new Animal() {
@Override
void makeSound() {
System.out.println("Woof! Woof!");
}
};
dog.makeSound();
}
}
In diesem Beispiel erstellen wir eine anonyme Klasse, die die abstrakte Animal
-Klasse erweitert und eine Implementierung für die makeSound()
-Methode bietet.
2. Anonyme Klasse, die eine Schnittstelle implementiert
Wir haben das bereits in unserem ersten Beispiel gesehen, aber hier ist ein weiteres:
interface Calculatable {
int calculate(int a, int b);
}
public class AnonymousClassImplement {
public static void main(String[] args) {
Calculatable adder = new Calculatable() {
@Override
public int calculate(int a, int b) {
return a + b;
}
};
System.out.println("5 + 3 = " + adder.calculate(5, 3));
}
}
Diese anonyme Klasse implementiert die Calculatable
-Schnittstelle und bietet eine Implementierung für die calculate()
-Methode, die zwei Zahlen addiert.
3. Anonyme Klasse innerhalb eines Methoden-/Konstruktorarguments
public class AnonymousClassArgument {
public static void main(String[] args) {
Thread t = new Thread(new Runnable() {
@Override
public void run() {
System.out.println("Anonymous thread is running!");
}
});
t.start();
}
}
Hier erstellen wir eine anonyme Klasse, die die Runnable
-Schnittstelle direkt als Argument zum Thread
-Konstruktor implementiert.
Wann sollte man Anonymous Classes verwenden
Anonyme Klassen sind besonders nützlich, wenn:
- Sie eine Schnittstelle oder eine Klasse für einen einmaligen Gebrauch implementieren müssen.
- Die Implementierung sehr kurz und einfach ist.
- Sie vermeiden möchten, eine separate benannte Klasse für eine einfache Operation zu erstellen.
Wenn Sie jedoch feststellen, dass Sie die gleiche anonyme Klasse mehrmals verwenden, könnte es besser sein, stattdessen eine benannte Klasse zu erstellen.
Einschränkungen von Anonymous Classes
Obwohl anonyme Klassen leistungsstark sind, haben sie einige Einschränkungen:
- Sie können nur eine Schnittstelle oder eine Klasse gleichzeitig implementieren oder erweitern.
- Sie können keine statischen Initialisierer oder Mitglieds-Schnittstellen haben.
- Sie können keine Konstruktoren haben (da sie keinen Namen haben).
Schlussfolgerung
Anonyme Klassen in Java sind wie geheime Agenten in Ihrem Code - sie kommen herein, erledigen ihre Arbeit und verschwinden spurlos (oder namenlos). Sie sind ein leistungsfähiges Werkzeug zum Erstellen schneller, einmaliger Klassen, die Ihren Code kompakter und lesbarer machen können.
Erinnern Sie sich daran, dass Übung den Meister macht. Versuchen Sie, Ihre eigenen anonymen Klassen zu erstellen und experimentieren Sie mit verschiedenen Anwendungsfällen. Bevor Sie es wissen, werden Sie anonyme Klassen wie ein echter Java-Ninja einsetzen können!
Frohes Coden und möge Ihre anonymen Klassen Sie immer mit einem fröhlichen "Hello, World!" begrüßen!
Credits: Image by storyset