什么是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属性与getter。 我可以不指定初始值吗?
  • 有什么办法停止崩溃在kotlin的EditText中的空十进制值?
  • 如何用Kotlinreflection改变成员字段?
  • 什么? 在Kotlin中是否指派任务的左侧?
  • 如何将字符串转换为字符在Kotlin?
  • Kotlin - 覆盖/实现类似数组的访问器函数
  • 无法find参数的方法springBoot() - 使用Kotlin的Spring Boot
  • Kotlin:通过转换修改(不可变的)列表,这是否合法?
  • 只有最后一个元素添加到Android的RecyclerView(Kotlin)
  • Kotlin:如何将一个对象函数作为parameter passing给另一个?
  • Kotlin language will be the best programming language for Android.