Анонимный класс
Анонимный класс - это класс без имени, который объявляется и сразу создается в одном выражении. Он позволяет создать одноразовую реализацию интерфейса или наследника класса без необходимости писать отдельный именованный класс. Анонимный класс применяется, когда нужно переопределить метод или реализовать интерфейс только в одном месте программы. В первом параметре указывается тип, который мы реализуем или наследуем, а внутри блока фигурных скобок размещается тело класса с переопределенными методами.
Синтаксис
Тип переменная = new Тип() {
// тело анонимного класса
};
Пример
Давайте создадим анонимный класс, реализующий
интерфейс Runnable, и запустим его в отдельном
потоке:
public class Main
{
public static void main(String[] args)
{
Runnable task = new Runnable() {
@Override
public void run() {
System.out.println("Task is running");
}
};
Thread thread = new Thread(task);
thread.start();
}
}
Результат выполнения кода:
"Task is running"
Пример
Давайте создадим анонимный класс, наследующий
класс Thread, и переопределим его метод:
public class Main
{
public static void main(String[] args)
{
Thread thread = new Thread() {
@Override
public void run() {
System.out.println("Hello from thread");
}
};
thread.start();
}
}
Результат выполнения кода:
"Hello from thread"
Пример
Давайте создадим анонимный класс для сортировки списка строк в обратном порядке:
import java.util.List;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.Collections;
public class Main
{
public static void main(String[] args)
{
List<String> list = new ArrayList<>(List.of("a", "b", "c", "d", "e"));
Collections.sort(list, new Comparator<String>() {
@Override
public int compare(String s1, String s2) {
return s2.compareTo(s1);
}
});
System.out.println(list);
}
}
Результат выполнения кода:
[e, d, c, b, a]
Смотрите также
-
класс
inner-class,
который объявляется внутри другого класса -
класс
local-class,
который объявляется внутри метода -
ключевое слово
interface,
которое создает интерфейс -
ключевое слово
abstract,
которое создает абстрактный класс