Es wird verwendet, wenn eine Klasse erstellt wird, die nur einmal vor Ort verwendet wird.
Normalerweise deklarieren Sie eine Klasse, die eine Schnittstelle implementiert, erstellen eine Instanz dieser Klasse und rufen eine Methode auf. Mit einer anonymen Klasse können Sie jedoch eine Schnittstelle deklarieren und gleichzeitig eine Methode verwenden.
Dieses Mal habe ich eine selbst erstellte Schnittstelle mit einer Methode namens Ausgabe verwendet.
IPrint
public interface IPrint {
void output();
}
Erstellen Sie eine Klasse, die die IPrint-Schnittstelle implementiert, und beschreiben Sie die Verarbeitungsdetails in der Methode.
PrintImpl
public class PrintImpl implements IPrint{
@Override
public void output() {
System.out.println("aaa");
}
}
Rufen Sie es in der Ausführungsklasse auf.
Main
public class Main {
public static void main(String[] args) {
IPrint ip = new PrintImpl();
ip.output();//Auf der Konsole"aaa"Wird ausgegeben
}
}
Sie können IPrint-Methoden in der Ausführungsklasse verwenden, ohne eine Klasse zu erstellen, die die Schnittstelle implementiert.
Main
public class Main {
public static void main(String[] args) {
IPrint ip = new IPrint() {
@Override
public void output() {
System.out.println("aaa");
}
};
ip.output();
}
}
Zusätzlich kann die Anzahl der Zeilen mit einem Lambda-Ausdruck verkürzt werden.
Main
public class Main {
public static void main(String[] args) {
IPrint ip = () -> System.out.println("xxxx");
ip.output(); // "xxxx"Wird ausgegeben
}
}
Wenn Sie eine neue Methode hinzufügen, die sich nicht auf der Schnittstelle befindet, wird sie beim Erstellen der Instanz nicht als Schnittstellentypvariable empfangen.
Main
public class Main3 {
public static void main(String[] args) {
new IPrint() {
@Override
public void output() {
System.out.println("aaa");
}
public void output2() {
System.out.println("bbb");
}
}.output2();
}
}
Recommended Posts