我需要创建一个分割字符串并转换值的通用方法
inline fun <reified T: Any> convertFromString(myString: String) : List<T>{
val castedList = ArrayList<T>()
for(item in myString.split(";")){
castedList.add(item as T)
}
return castedList
}
Run Code Online (Sandbox Code Playgroud)
我调用此方法convertFromString<Int>("1;2;3;4;5;6")并期望有输出,List<Int>但它在 cast 期间失败item as T。
如何将所有值转换为 generic T?
我宁愿建议您提供一个转换功能,例如
inline fun <T: Any> convertFromString(myString: String, transformation: (String) -> T)
= myString.split(";")
.map(transformation)
.toList()
Run Code Online (Sandbox Code Playgroud)
请注意,您不能将 the 转换String为其他任何内容String,这就是为什么item as T不起作用。使用转换函数,您可以确保它被正确转换(只要您不用item as T作转换 ;-))。
一些示例用法/转换函数可能是:
val doubleList = convertFromString("123;123") { it.toDouble() }
val intList = convertFromString("123;123") { it.toInt() }
val objList = convertFromString("data=123;data=444") { yourParser.parse(it) }
Run Code Online (Sandbox Code Playgroud)
此外,使用这种方法,您不再需要reified。的inline但是仍然是含有lambda函数任何功能是有用的。
| 归档时间: |
|
| 查看次数: |
469 次 |
| 最近记录: |