在Java类中使用Kotlin注释类

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在Java类中使用Kotlin注释类相关的知识,希望对你有一定的参考价值。

我正在Kotlin中编写新功能,但有些东西已经用Java编写了。

我在Mockito(Kotlin)写测试,但Mockito有最后一堂课的问题所以我创建了:

annotation class Mockable {}

并添加到Gradle-build

apply plugin: 'kotlin-allopen'

allOpen {
    annotation('com.Mockable')
}

所以使用这个注释类我可以模拟Kotlin类。

我如何在Java类中使用这个注释?

答案

你不需要Java。但无论如何,还有另一种方法可以将Mockito与Kotlin一起使用:

使用内容创建文件src / test / resources / mockito-extensions / org.mockito.plugins.MockMaker:

mock-maker-inline

这改变了模拟行为,也支持像Kotlin那样的final类。对于某些Java类,我之后不得不使用spy()而不是mock()

另一答案

我如何在Java类中使用这个注释?

您不能以这种方式使用此注释,因为kotlin-allopen仅适用于Kotlin类。在Java中,只是不要将类标记为final ...

就此而言,在Kotlin中,如果我理解正确,它似乎没有用处:当注释将以某种方式处理时需要使用kotlin-allopen,这需要创建带注释类型的子类,所以你需要编写open以及注释。在这里,你可以写open而不是@Mockable

以上是关于在Java类中使用Kotlin注释类的主要内容,如果未能解决你的问题,请参考以下文章

在kotlin中使用java自定义注释

如何使用 java / kotlin 中的注释处理将方法附加到现有类?

Kotlin 数据类中的函数作为参数导致打包错误

将代码从Java更改为Kotlin后,注释未正确转换

Kotlin:找不到符号类片段或其他 android 类

SpringBoot + Jackson + Kotlin 数据类:忽略字段注释