SoB*_*ich 3 java enums enumset kotlin
假设我们有枚举
enum class Status {
OPEN, CLOSED
}
enum class Weekday {
WORKDAY, DAYOFF
}
Run Code Online (Sandbox Code Playgroud)
有一个 Java 类
public KotlinInvoker {
public methodWithKotlinEnumAsParameter_namely_AppendWorkingStatusString( ? kotlinEnum) {
...
}
}
Run Code Online (Sandbox Code Playgroud)
目标是直接将任何 jave / kotlin 枚举传递给那种函数,就像 Java 一样
<E extends java.lang.Enum<E>>
methodAcceptingEnumAsParameter(E enum) {
...
return result + ' ' + enum.toString();
}
Run Code Online (Sandbox Code Playgroud)
所以你可以将任何枚举传递给它。应该是什么方法签名才能很好地与 kotlin 枚举一起使用,并且根据官方 kotlin 文档将其映射到 java 枚举?
您的 Java 示例在 Kotlin 中工作得很好:
enum class Status {
OPEN, CLOSED
}
enum class Weekday {
WORKDAY, DAYOFF
}
fun <E : Enum<E>> methodWithKotlinEnumAsParameter(arg : E)
{
println(arg.name)
}
Run Code Online (Sandbox Code Playgroud)
现在,例如,如果您调用methodWithKotlinEnumAsParameter(Weekday.DAYOFF),它将在控制台上打印DAYOFF。