Il est utilisé lors de la création d'une classe qui n'est utilisée qu'une seule fois sur place.
Normalement, vous déclarez une classe qui implémente une interface, créez une instance de cette classe et appelez une méthode, mais avec une classe anonyme, vous pouvez déclarer une interface et utiliser une méthode en même temps.
Cette fois, j'ai utilisé une interface personnalisée avec une méthode appelée output.
IPrint
public interface IPrint {
void output();
}
Créez une classe qui implémente l'interface IPrint et décrivez les détails de traitement dans la méthode.
PrintImpl
public class PrintImpl implements IPrint{
@Override
public void output() {
System.out.println("aaa");
}
}
Appelez-le dans la classe d'exécution.
Main
public class Main {
public static void main(String[] args) {
IPrint ip = new PrintImpl();
ip.output();//Sur la console"aaa"Est sortie
}
}
Vous pouvez utiliser les méthodes IPrint dans la classe d'exécution sans créer de classe qui implémente l'interface.
Main
public class Main {
public static void main(String[] args) {
IPrint ip = new IPrint() {
@Override
public void output() {
System.out.println("aaa");
}
};
ip.output();
}
}
De plus, le nombre de lignes peut être raccourci avec une expression lambda.
Main
public class Main {
public static void main(String[] args) {
IPrint ip = () -> System.out.println("xxxx");
ip.output(); // "xxxx"Est sortie
}
}
Si vous ajoutez une nouvelle méthode qui ne figure pas sur l'interface, elle ne sera pas reçue en tant que variable de type d'interface lors de la création de l'instance.
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