kotlin:如何重载导入的功能

时间:2019-01-15 19:15:31

标签: kotlin kotlin-interop

我使用assertj。它具有功能assertThat(int)assertThat(Object)。我想添加自己的功能

fun <T> assertThat(flux: Flux<T>) = assertThat(flux.toStream())

但是然后好像我不能轻易使用它。当我在测试类MyTest之外声明函数时,测试中的函数调用将绑定到assertThat(Object)而不是assertThat(Flux)

import org.assertj.core.api.Assertions.assertThat

//<----------- if declared here, doesn't work

class MyTest {

   //<----------- if declared here, all is ok

  @Test fun test() {
     assertThat(Flux.just(1)).containsExactly(1)
  }
}

我应该怎么做才能使用我的功能?

1 个答案:

答案 0 :(得分:1)

您可以在一个额外的文件中对其进行定义,然后将其显式导入。我认为在文件中定义导入时,甚至还可以添加导入,但是IDE将此导入显示为未使用。

建议是:在www.domain.com 中定义扩展名,然后将其导入:

your/package/testutils.kt