Ответ 1
Это анонимный внутренний класс. Вы можете найти дополнительную информацию об этом на ссылку документации Java для Внутренние классы. EDIT Я добавляю лучшую ссылку, описывающую анонимные внутренние классы, поскольку документация по 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);
}
}
Пример несколько надуман и, очевидно, не завершен, но я думаю, что он переводит идею.