Was bedeutet der Operator `::` in Kotlin? Erklären Sie anhand von Beispielen
Hallo zusammen! Ich habe gerade angefangen, Kotlin für die Android-Entwicklung zu lernen, und bin auf eine seltsame Syntax mit zwei Doppelpunkten `::` gestoßen. Ich sehe sie überall: in Lambdas, bei der Arbeit mit Reflection, in Jetpack Compose. \n\nZum Beispiel habe ich diesen Code gesehen:\n```kotlin\nval onClick: (View) -> Unit = ::handleClick\n```\nOder hier:\n```kotlin\nclass MyFragment : Fragment() {\n private val binding by viewModels()\n // ...\n val items = listOf("A", "B", "C")\n val filtered = items.filter(String::isNotEmpty)\n}\n```\nUnd auch in Compose:\n```kotlin\nButton(onClick = ::onButtonClick) { Text("Click") }\n```\n\nIch verstehe, dass es irgendwie mit Referenzen auf Funktionen oder Eigenschaften zusammenhängt, aber ich kann den Unterschied zwischen `::handleClick` und einfach `{ handleClick(it) }` nicht erfassen. Wozu braucht man diesen Operator? Wann sollte man ihn verwenden und wann ist es besser, ein Lambda zu schreiben? Bitte erklären Sie es anhand einfacher Beispiele für einen Anfänger. \n\nBesonders interessiert mich:\n1. Der Unterschied zwischen einer Referenz auf eine Methode einer Klasse und einer Referenz auf eine Funktion auf oberster Ebene.\n2. Wie man `::` in verschiedenen Kontexten verwendet (z. B. bei Properties, Konstruktoren).