Это анонимный внутренний класс. Вы можете найти больше информации об этом по ссылке документации Java для Inner Classes . РЕДАКТИРОВАТЬ Я добавляю лучшую ссылку , описывающую анонимные внутренние классы, поскольку документация Java оставляет желать лучшего. / EDIT
Большинство людей используют анонимные внутренние классы для определения слушателей на лету. Рассмотрим этот сценарий:
У меня есть Button
, и когда я нажимаю на него, я хочу, чтобы он отображал что-то на консоли. Но я не хочу создавать новый класс в другом файле, и я не хочу определять внутренний класс позже в этом файле, я хочу, чтобы логика была немедленно доступна прямо здесь.
class Example {
Button button = new SomeButton();
public void example() {
button.setOnClickListener(new OnClickListener() {
public void onClick(SomeClickEvent clickEvent) {
System.out.println("A click happened at " + clickEvent.getClickTime());
}
});
}
interface OnClickListener {
void onClick(SomeClickEvent clickEvent);
}
interface Button {
void setOnClickListener(OnClickListener ocl);
}
}
Пример несколько надуманный и, очевидно, не завершенный, но я думаю, что он передает идею.