2017-06-17 12 views
7

W języku Java, aby przesłonić metodę przy uruchamianiu nowego obiektu możemy zrobić toJak zastąpić metodę podczas tworzenia obiektu w Kotlin?

public ActivityTestRule<MainActivity> rule = new ActivityTestRule<MainActivity>(
      MainActivity.class) { 
     @Override 
     protected void beforeActivityLaunched() { 
      // implement code 
      super.beforeActivityLaunched(); 
     } 
    }; 

Jak to zrobić w Kotlin? Próbowałem tego kodu, ale nie udało się go skompilować.

@Rule @JvmField 
var rule = ActivityTestRule<MainActivity>(MainActivity::class.java) { 
    override fun beforeActivityLaunched() { 
     super.beforeActivityLaunched() 
    } 
} 
+0

Jaki jest błąd, który otrzymujesz? –

+0

@NihalSaxena Nie będzie kompilacji, IDE mówi niezgodność typu i nierozwiązane odniesienia. – aldok

Odpowiedz

13

Jeśli chcesz utworzyć anonimową klasę wewnętrzną, należy użyć object.

var rule = object : ActivityTestRule<MainActivity>(MainActivity::class.java) { 
    override fun beforeActivityLaunched() { 
     super.beforeActivityLaunched() 
    } 
} 

Zobacz także Object Expressions and Declarations.

Powiązane problemy