В этом question есть одна линия,Как (this :: methodName) работает в этом коде?
findViewById(R.id.go_to_play_store).setOnClickListener(this::goToPlayStore);
как эта линия точно обработки щелчка слушателя?
В этом question есть одна линия,Как (this :: methodName) работает в этом коде?
findViewById(R.id.go_to_play_store).setOnClickListener(this::goToPlayStore);
как эта линия точно обработки щелчка слушателя?
В Java8 представлена концепция Method references и Functional interfaces. Если функция onClickListener
требует функции с одним аргументом (a.k.a Functional Interface), то, если типы возвращаемых данных и типы аргументов соответствуют вашей функции (которая является goToPlayStore), вы можете передать ее ссылку как функциональный интерфейс.
Это новая функция языка JAVA 8 Lambda Expressions.
:: обратитесь к новому синтаксису Java 8, известному как method references. Вы можете ссылаться на класс или экземпляр и пройти по методу, который будет обрабатывать событие
Нажмите на свою вызывающую функцию, называемую goToPlayStore(), расположенную в этом действии или фрагменте.
его ссылки Метод в Java 8
что позволяет ссылаться на существующий метод по имени. Ссылки на методы могут использоваться вместо лямбда-выражений, если они удовлетворяют требованиям функционального интерфейса. Для статических методов синтаксис составляет
Classname::methodName
«goToPlayStore» - это функция, которую он называет. – Prexx
читать о java 8 :: operator (и lambdas) – Selvin
thats power of lambda. –