В Java ваши выражения имеют следующие типы:
Observable.class
-> Class<Observable>
any(Observable.class)
-> Observable
Аналогично в Котлине:
Observable::class.java
-> Class<Observable<*>>
any(Observable::class.java)
-> Observable<*>
В Java,Observable
является необработанным типом;вы должны ожидать, что ваш компилятор / IDE выделит предупреждение, когда вы неявно преобразуете в Observable<Action>
.Для обратной совместимости с миром, предшествующим дженерикам, это не может не компилироваться.
Kotlin старается быть умнее в том, как он обрабатывает дженерики, плюс вещь обратной совместимости не применяется.Таким образом, это заставляет вас четко указывать свои намерения здесь.
На касательной, если вы используете Mockito в Kotlin, я настоятельно рекомендую привязки Mockito-Kotlin , поскольку они делают это существенно менее многословным (в данном случае это будет any()
).