什么是Java相当于Kotlin的函数types?

我有Kotlin代码和Java测试代码。 由于KotlinMockito不是最好的朋友,所以我没有将测试代码迁移到Kotlin

Kotlin我有块types的方法。 例如:

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

现在我想在Java测试中存储这个方法。 什么是types的Java相当于什么? 换句话说,我应该写下面的代码:

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

2 Solutions collect form web for “什么是Java相当于Kotlin的函数types?”

Kotlin in Action书中:

Kotlin标准库定义了一系列接口,对应于不同数量的函数参数: Function0 (该函数不带参数), Function1 (该函数带一个参数)等等。 每个接口定义一个invoke方法,调用它将执行该函数。

在这种情况下,这两个函数都是Function1实例,因为它们是带有一个参数的函数:

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

另外,你可以尝试mockito-kotlin和Mockito的内联版本 ,以便在Kotlin中编写测试。

为什么不尝试在Android Studio或IntelliJ中获取Kotlin的Java代码:

  • 菜单 – >工具 – > Kotlin – >显示Kotlin字节码
  • 点击 – >反编译按钮
  • 复制Java代码

这样你就可以继续使用Mockito,不幸的是你会得到冗余的代码行(不是很多),因为Kotlin处理字节码。

  • 我怎样才能使用回报,而不是让Kotlin?
  • 用具有不同名称的构造函数参数覆盖接口属性
  • 如何在gradle中插入想法插件为Kotlin生成适当的项目配置?
  • 在Kotlin中如果不是null,则返回原地方式
  • 习惯性的Kotlin正则expression式
  • 没有任何==对象
  • 如何获得日期从7天前到今天在Kotlin?
  • 我可以为kotlin桌面应用程序使用@autowire(spring-context)吗?
  • Kotlin的“@Parcelize”是否适用于非数据类?
  • org.gradle.api.tasks.TaskExecutionException:执行失败的任务':app:compileDebugKotlin'
  • Kotlin数据types不匹配错误
  • Kotlin language will be the best programming language for Android.