Как передать любое (известное только во время выполнения) перечисление Kotlin в качестве параметра методу в коде Java? - PullRequest
0 голосов
/ 31 мая 2018

Скажем, у нас есть перечисления

enum class Status {
    OPEN, CLOSED
}

enum class Weekday {
    WORKDAY, DAYOFF
}

Наличие класса Java

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

Цель состоит в том, чтобы напрямую передать ЛЮБОЕ перечисление jave / kotlin в такого рода функции, как если бы выбудет иметь

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

, чтобы вы могли передать ему ЛЮБОЕ перечисление.какой должна быть сигнатура метода, чтобы она хорошо играла с enum kotlin, а также с java enum согласно официальным документам kotlin?

1 Ответ

0 голосов
/ 04 июня 2018

Ваш пример 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 на консоль.

...