Avatar ·

Kotlin中的`::`运算符是什么意思?通过示例解释

大家好!我刚开始学习用于Android开发的Kotlin,遇到了一个带有两个冒号`::`的奇怪语法。我在各处都看到它:在lambda中、在使用反射时、在Jetpack Compose中。 例如,我见过这样的代码: ```kotlin val onClick: (View) -> Unit = ::handleClick ``` 或者这样: ```kotlin class MyFragment : Fragment() { private val binding by viewModels() // ... val items = listOf("A", "B", "C") val filtered = items.filter(String::isNotEmpty) } ``` 还有在Compose中: ```kotlin Button(onClick = ::onButtonClick) { Text("Click") } ``` 我理解这与函数或属性的引用有关,但无法区分`::handleClick`和简单的`{ handleClick(it) }`之间的区别。为什么需要这个运算符?什么时候使用它,什么时候最好写lambda?请用简单的示例为新手解释一下。 特别感兴趣的是: 1. 类方法引用和顶层函数引用之间的区别。 2. 如何使用