2016-03-14 15 views
14

Ich bin in einer anonymen inneren Klasse und möchte die Instanz der äußeren Klasse referenzieren. In Java kann unter Verwendung von .this mit vorangestelltem Klassennamen referenziert werden, um Mehrdeutigkeiten aufzulösen. Wie: MainActivity.this. Wie kann ich dasselbe in Kotlin erreichen? Weil der Compiler sich beschweren 'expression 'this' cannot be a selector(occur after a dot)' wenn ich das tue. Vielen Dank!Wie referenziere ich die Instanz der äußeren Klasse in Kotlin?

Antwort

26

Sie können [email protected] verwenden, um auf die äußere Klasseninstanz zu verweisen.

Tipp: Ich konnte mich auch nicht an die Syntax erinnern, also schrieb ich ein einfaches Beispiel in Java und bat IntelliJ, die Klasse nach Kotlin zu konvertieren, um die Antwort zu finden.

+3

Es gibt einen anderen "Trick". Schreiben Sie eine Variable mit dem korrekten Typ 'val a: MainActivity =' und rufen Sie die intelligente Vervollständigung auf (Strg + Umschalt + Leertaste). IntelliJ schlägt den Ausdruck 'this @ MainActivity' vor. –

+1

Folgefrage für den Fall, dass jemand Lust hat zu fragen: Warum wird dieses _not_ nicht genauso gemacht wie in Java? Das ist eine sehr seltsame Syntax, die ich nirgendwo anders gesehen habe. –

Verwandte Themen