РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
76 of 1163 menu

Анонимный класс

Анонимный класс - это класс без имени, который объявляется и сразу создается в одном выражении. Он позволяет создать одноразовую реализацию интерфейса или наследника класса без необходимости писать отдельный именованный класс. Анонимный класс применяется, когда нужно переопределить метод или реализовать интерфейс только в одном месте программы. В первом параметре указывается тип, который мы реализуем или наследуем, а внутри блока фигурных скобок размещается тело класса с переопределенными методами.

Синтаксис

Тип переменная = 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,
    которое создает абстрактный класс
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить