kotlin - 具有枚举约束的 Kotlin 泛型函数
问题描述
我想做如下的事情:
inline fun<T: Enum<T>> myFunction(enumStr: String){
T.valueOf(enumStr)
//...
}
这样我的泛型参数就被限制为枚举类类型,以便我可以访问 valueOf 函数。我收到一条错误消息,指出:
Type parameter 'T' cannot have or inherit a companion object, so it cannot be on the left hand side of dot
我理解这意味着我不能在泛型上使用伴随对象函数。有什么方法可以实现我想要的 - 将字符串转换为通用枚举?
解决方案
如果您具体化您的类型参数,则可以使用该enumValueOf
函数(此处的文档)。像这样:
inline fun <reified T: Enum<T>> myFunction(enumStr: String) {
val enumValue = enumValueOf<T>(enumStr)
//...
}
推荐阅读
- hash - 密码散列与加密不匹配
- ios - 键盘高度不同导致视图大小调整不正确
- java - 从 android Java 中的 volley repose 向 google maps API 添加多个标记
- php - php结构与foreach成if
- django - 使用 Vue.js、Django Rest Framework 作为后端和 /api/ 在同一台服务器上配置 Nginx?
- javascript - Moment.js:错误->UnhandledPromiseRejectionWarning
- bash - 多行命令 BASH 和 python 切换选项
- c# - WindowsFormsHost 托管的 DataVizualization.Chart 中的 ContextMenu
- ruby-on-rails - Rails Turbo render_async:将 JWT 添加到异步请求
- rest - 我们可以为我们的服务配置双 @endpoint 吗?是这样吗,怎么配置呢?