如何(this :: methodName)在此代码中工作?

时间:2017-01-19 10:59:06

标签: android

在此question中有一行

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

该行如何正确处理点击监听器?

3 个答案:

答案 0 :(得分:5)

Java8引入了Method referencesFunctional interfaces的概念。如果函数onClickListener需要一个带有一个参数的函数(a.k.a Functional Interface),那么如果返回类型和参数类型与您的函数(goToPlayStore)匹配,那么您可以将其引用作为函数接口传递。

答案 1 :(得分:2)

这是新的JAVA 8语言功能Lambda Expressions。

::请参阅Java 8中称为method references的新语法。您可以引用类或实例,并传递将处理事件的方法

单击其名为goToPlayStore()的调用函数,该函数位于该活动或片段中。

答案 2 :(得分:2)

  

Java 8中的方法引用

这允许我们按名称引用现有方法。可以使用方法引用代替lambda表达式,只要它们满足功能接口的要求即可。 对于静态方法,语法为

Classname::methodName