¿Qué es el equivalente java de los types de funciones de Kotlin?

Tengo código en Kotlin y código de testing en Java . Como Kotlin y Mockito no son los mejores amigos, no he migrado el código de testing a Kotlin .

En Kotlin tengo methods con types de bloque. Por ejemplo:

 open fun getProductInfo(resultListener: (List<Deal>)->Unit, errorListener: (Throwable)->Unit) { ... } 

Ahora quiero ressave este método en las testings de Java . ¿Cuál es el equivalente de Java de los types? En otras palabras, ¿qué debo escribir en lugar de ??? s a continuación:

 doAnswer(invocation -> { ??? resultListener = (???) invocation.getArguments()[0]; // call back resultListener return null; }).when(api).getProductInfo(any(), any()); 

Del libro de Kotlin in Action :

La biblioteca estándar de Kotlin define una serie de interfaces, que corresponden a diferentes numbers de arguments de funciones: Function0<R> (esta function no toma arguments), Function1<P1, R> (esta function toma un argumento), y así sucesivamente. Cada interfaz define un solo método de invocación, y al llamarlo se ejecutará la function.

En este caso, estas dos funciones son instancias de Function1 , ya que son funciones que toman un parámetro:

 Mockito.doAnswer(invocation -> { Function1<List<Deal>, Unit> resultListener = (Function1<List<Deal>, Unit>) invocation.getArguments()[0]; Function1<Throwable, Unit> errorListener = (Function1<Throwable, Unit>) invocation.getArguments()[1]; resultListener.invoke(new ArrayList<>()); return null; }).when(api).getProductInfo(any(), any()); 

En otra nota, puedes probar mockito-kotlin y la versión en línea de Mockito para escribir tus testings en Kotlin también.

¿Por qué no probar en Android Studio o IntelliJ para get el código de Kotlin en Java?

  • Menú -> Herramientas -> Kotlin -> Mostrar Kotlin Bytecode
  • Haga clic en el button -> Descomstackr
  • Copia el código de Java

De esta manera puede continuar su trabajo con Mockito, desafortunadamente obtendrá líneas de código networkingundantes (no mucho) porque Kotlin se ocupa de bytecode.

  • Cómo `List <MyClass> :: clas.java` en kotlin
  • java.lang.reflect.InvocationTargetException al usar la biblioteca Kotlin-Mokito
  • Burlas de respuestas API usando Mockito
  • ¿Cómo puedo probar AsyncTask no llamado?
  • nullPointerException en shanetworkingpreferences class auxiliar Al ejecutar una testing
  • Error con los methods simulados
  • kotlin testing con mockito: fracaso de comparación
  • Kotlin coroutines unit testing usando mockito
  • Cómo alinear manualmente la diversión de Kotlin con <reified T: Any>
  • Mocking interfaces genéricas con Kotlin y Mockito
  • Cómo burlarse de kotlin ByteArray usando Mockito?