如何将Java枚举转字符串数组的泛型方法改写为Kotlin实现
Kotlin实现方案
1. 与原Java代码功能完全对齐的写法
直接对应你提供的Java逻辑改写,调用方式和原Java一致:
fun getNames(e: Class<out Enum<*>>): Array<String> { return e.enumConstants.map { it.name }.toTypedArray() }
Kotlin默认支持集合操作,不需要额外引入Stream API,比Java写法更简洁。
2. 更符合Kotlin使用习惯的泛型版本
用Kotlin特有的reified实化泛型,可以不用手动传入枚举的Class对象,调用更便捷:
inline fun <reified T : Enum<T>> getNames(): Array<String> { return enumValues<T>().map { it.name }.toTypedArray() }
调用示例
假设你有如下枚举类:
enum class Color { RED, GREEN, BLUE }
两种写法的调用方式分别为:
// 第一种写法调用 val names1 = getNames(Color::class.java) // 第二种reified泛型写法调用 val names2 = getNames<Color>()
两种写法返回的都是包含["RED", "GREEN", "BLUE"]的Array<String>对象。
内容的提问来源于stack exchange,提问作者Emmanuel Conradie
相关产品推荐
相关产品推荐

