Анонимный класс в Java
Анонимный класс - тип без отдельного имени в
файле: выражение new ИмяТипа() { ... } сразу
создаёт объект и при необходимости переопределяет
методы базового класса или интерфейса.
Для записи в блоге зададим правило форматирования заголовка через анонимную реализацию интерфейса:
interface TitleFormatter {
String format(String raw);
}
class Post {
String title;
Post(String title) {
this.title = title;
}
String displayTitle(TitleFormatter formatter) {
return formatter.format(title);
}
}
Создадим анонимный класс форматирования и выведем заголовок записи:
Post post = new Post("news");
TitleFormatter formatter = new TitleFormatter() {
@Override
public String format(String raw) {
return raw.toUpperCase();
}
};
System.out.println(post.displayTitle(formatter));
Переменная имеет тип интерфейса TitleFormatter,
а работает переопределённая логика анонимного объекта.
Такой объект живёт, пока на него есть ссылка; это не
единственный экземпляр на всю программу, как у singleton.
Объявите интерфейс Greeter с методом
String greet(String name). Сохраните в
Greeter g анонимный класс, который возвращает
"hi " и имя. Выведите g.greet("Bo").