/ / Чи повертається сюди анонімний об’єкт? - java, android, інтерфейс, зворотний дзвінок, переосмислення

Чи це анонімний об'єкт повертається тут? - java, андроїд, інтерфейс, зворотний виклик, перевизначення

Я переглядаю Android-код на камерінавчальний посібник. Я родом з мовного набору C # / Obj-C / Swift, тому Java для мене все ще є новим. Я знайомий з функціональним програмуванням, але цей синтаксис, який я бачу, не здається функціональним за своєю суттю (а може, я помиляюся).

Це код:

 button.setOnClickListener
(
new View.OnClickListener()
{
@Override
public void onClick(View v)
{

}
}
);

Лінія new View.OnClickListener() це те, на чому я застряг. OnClickListener - це інтерфейс. Отже, моє запитання таке: це новий View.OnClickListener (), який створює анонімний об'єкт, який має інтерфейс OnClickListener, і замінює onClickView?

P.S. Якщо ви можете також дати мені ім'я Java того, що цей "тип" код, я б також вдячний.

Відповіді:

1 для відповіді № 1

Як ви здогадалися, заклик до new View.OnClickListener() {...} інстанціює об'єкт анонімного типу, який реалізується View.OnClickListener. Назва цього класу визначатиметься назвою навколишній клас, і прийме форму SurroundingClass$index. Тож якщо це перший анонімний внутрішній клас в Росії MyClass, воно буде називатися MyClass$1.


1 для відповіді № 2

Так, він створює анонімний клас, який реалізував метод. Заціни: Анонімні класи Oracle