Ответ на отредактированный вопрос n: Как сопоставить перечисление Java со строкой?
вы можете вызвать name()
или toString()
в перечислении, чтобы получить Строковое представление его.
name()
не может быть перезаписано и всегда возвращает текстовое представление значения, определенного в коде, в то время как toString()
может быть перезаписано, так что это может зависеть от вашего варианта использования, что делать использовать. Из-за того, что name()
нельзя перезаписать, я предпочитаю всегда использовать name()
, что может иметь меньше побочных эффектов или неожиданного поведения при работе с библиотеками, которые не находятся под вашим контролем.
Исходный ответ :
1 этого делать не нужно. Вы можете использовать тот же класс Java также в коде Kotlin.
2 Вы можете просто повторно использовать перечисление, как в варианте 1), вы можете повторно использовать перечисление Java в коде Kotlin:
data class PersonDTO(
val id: Long? = null,
val name: String? = null,
val countryCode: CountryCode
)
3 Вы можете написать перечисление Kotlin с функцией сопоставления, чтобы создать соответствующий экземпляр перечисления:
enum class KotlinCountryCode {
EXAMPLE;
fun fromJavaCountryCode(input: CountryCode): KotlinCountryCode? {
if (input.name() == EXAMPLE.name) {
return EXAMPLE
}
return null
}
}