2017-01-19 5 views
2

В этом question есть одна линия,Как (this :: methodName) работает в этом коде?

findViewById(R.id.go_to_play_store).setOnClickListener(this::goToPlayStore); 

как эта линия точно обработки щелчка слушателя?

+0

«goToPlayStore» - это функция, которую он называет. – Prexx

+3

читать о java 8 :: operator (и lambdas) – Selvin

+0

thats power of lambda. –

ответ

3

В Java8 представлена ​​концепция Method references и Functional interfaces. Если функция onClickListener требует функции с одним аргументом (a.k.a Functional Interface), то, если типы возвращаемых данных и типы аргументов соответствуют вашей функции (которая является goToPlayStore), вы можете передать ее ссылку как функциональный интерфейс.

1

Это новая функция языка JAVA 8 Lambda Expressions.

:: обратитесь к новому синтаксису Java 8, известному как method references. Вы можете ссылаться на класс или экземпляр и пройти по методу, который будет обрабатывать событие

Нажмите на свою вызывающую функцию, называемую goToPlayStore(), расположенную в этом действии или фрагменте.

1

его ссылки Метод в Java 8

что позволяет ссылаться на существующий метод по имени. Ссылки на методы могут использоваться вместо лямбда-выражений, если они удовлетворяют требованиям функционального интерфейса. Для статических методов синтаксис составляет

Classname::methodName 
Смежные вопросы