2016-03-14 19 views
14

Jestem wewnątrz anonimowej klasy wewnętrznej i chcę odwołać się do instancji klasy zewnętrznej. W Javie można się do niego odwoływać za pomocą .this poprzedzonej nazwą klasy, aby rozwiązać niejasności. Podoba się: MainActivity.this. Jak mogę osiągnąć to samo w Kotlin? Ponieważ kompilator narzeka 'expression 'this' cannot be a selector(occur after a dot)' kiedy to robię. Dzięki!Jak odwołać się do instancji klasy zewnętrznej w Kotlin?

Odpowiedz

26

Możesz użyć [email protected], aby odwołać się do zewnętrznej instancji klasy.

Wskazówka: Nie pamiętam również składni, więc napisałem prosty przykład w Javie i poprosiłem IntelliJ o przekształcenie klasy w Kotlin, aby znaleźć odpowiedź.

+3

Istnieje kolejna "sztuczka". Napisz zmienną o poprawnym typie 'val a: MainActivity =' i wywołaj inteligentne uzupełnianie (Ctrl + Shift + Spacja). IntelliJ zasugeruje wyrażenie "this @ MainActivity". –

+1

Pytanie uzupełniające w przypadku, gdy ktoś ma ochotę zapytać: dlaczego _nie_ robi się tak samo jak w Javie? Jest to bardzo dziwna składnia, której nigdy nie widziałem nigdzie indziej. –

Powiązane problemy