Анонимные классы Java
В Java класс может содержать другой класс и создаваться напрямую без указания имени класса.
В основном он используется для создания объекта, выполняющего конкретную задачу при необходимости, что делает код более кратким.
Анонимные классы — это классы, которые не могут иметь имён. На них нельзя ссылаться, и они могут использоваться только во время создания с помощьюnewоператора для их объявления.
Формат синтаксиса анонимного класса:
class outerClass {
// 定义一个匿名类
object1 = new Type(parameterList) {
// 匿名类代码
};
}
Приведённый выше код создаёт объект анонимного класса object1. Анонимный класс определяется как выражение, поэтому в конце ставится точка с запятой;для завершения.
Анонимные классы обычно наследуют родительский класс или реализуют интерфейс.

Анонимный класс, наследующий родительский класс
В следующем примере создаётся класс Polygon. Этот класс имеет только один метод — display(). Класс AnonymousDemo наследует класс Polygon и переопределяет его метод display():
Пример
public void display() {
System.out.println("Внутри класса Polygon");
}
}
class AnonymousDemo {
public void createClass() {
// Созданный анонимный класс наследует класс Polygon
Polygon p1 = new Polygon() {
public void display() {
System.out.println("Внутри анонимного класса.");
}
};
p1.display();
}
}
class Main {
public static void main(String[] args) {
AnonymousDemo an = new AnonymousDemo();
an.createClass();
}
}
При выполнении приведённого выше кода создаётся объект p1 анонимного класса. Этот объект вызывает метод display() анонимного класса, и вывод будет:
Inside an anonymous class.
Анонимный класс, реализующий интерфейс
В следующем примере создаётся анонимный класс, реализующий интерфейс Polygon:
Пример
public void display();
}
class AnonymousDemo {
public void createClass() {
// Анонимный класс реализует интерфейс
Polygon p1 = new Polygon() {
public void display() {
System.out.println("Внутри анонимного класса.");
}
};
p1.display();
}
}
class Main {
public static void main(String[] args) {
AnonymousDemo an = new AnonymousDemo();
an.createClass();
}
}
Вывод:
Inside an anonymous class.Другие расширения