Мы можем использовать двойные фигурные скобки в программе Java, когда нам нужно инициализировать класс без создания объекта и использовать функции в нем. Это концепция создания анонимного класса внутри родительского класса.
new Parent() {{ }}
Первый набор фигурных скобок создает анонимный класс, а второй набор фигурных скобок создает содержимое внутри класса. Методы, вызываемые внутри анонимного класса, ссылаются на основной класс с помощью скрытого ключевого слова “this”. Поэтому нам не нужно упоминать ключевое слово.
class Parent {
private int a = 10;
void addTwo() {
a += 2;
}
void showValueOfA() {
System.out.println(a);
}
}
public class Main {
public static void main(String[] args) {
// anonymous class
new Parent() {{
// no need to mention the keyword "this"
addTwo();
addTwo();
addTwo();
showValueOfA();
}};
}
}
// Output: 16
использование:
Нет необходимости в создании какого-либо объекта, и многие анонимные классы могут быть созданы внутри анонимного класса
Эта концепция может быть использована для быстрой разработки
Проблемы:
Может возникнуть утечка памяти, поскольку базовый класс содержит в себе всю память дочерних анонимных классов.
Сбор мусора не может быть достигнут эффективно из-за больших ресурсов в нем.
Создавая множество анонимных классов, параллельно создает множество файлов классов с ‘$’, за которым следует число
Main$1 является файлом класса для анонимного класса внутри основного класса