5

假设我们有枚举

enum class Status {
    OPEN, CLOSED
}

enum class Weekday {
    WORKDAY, DAYOFF
}

拥有一个 Java 类

public KotlinInvoker {
    public methodWithKotlinEnumAsParameter_namely_AppendWorkingStatusString( ? kotlinEnum) {
    ...
    }
}

目标是直接将任何 jave / kotlin 枚举传递给那种函数,就像 Java 你会有一个

    <E extends java.lang.Enum<E>>
    methodAcceptingEnumAsParameter(E enum) {
    ...
    return result + ' ' + enum.toString();
    }

所以你可以将任何枚举传递给它。与 kotlin 枚举很好地配合使用的方法签名应该是什么,并且它应该根据官方 kotlin 文档映射到 java 枚举?

4

1 回答 1

8

您的 Java 示例在 Kotlin 中运行良好:

enum class Status {
    OPEN, CLOSED
}

enum class Weekday {
    WORKDAY, DAYOFF
}

fun <E : Enum<E>> methodWithKotlinEnumAsParameter(arg : E)
{
    println(arg.name)
}

现在,例如,如果您调用methodWithKotlinEnumAsParameter(Weekday.DAYOFF),它会将DAYOFF打印到控制台。

于 2018-06-03T21:54:29.790 回答