Я переглядаю 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