Casting 名单的演员阵容<;字符串>;列出<;T>;在科特林
我需要创建一个拆分字符串并强制转换值的通用方法Casting 名单的演员阵容<;字符串>;列出<;T>;在科特林,casting,kotlin,Casting,Kotlin,我需要创建一个拆分字符串并强制转换值的通用方法 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 castedL
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
}
inlinefunconvertfromstring(myString:String):列表{
val castedList=ArrayList()
对于(myString.split(“;”)中的项){
castedList.add(项目为T)
}
返回铸造列表
}
我调用此方法convertFromString(“1;2;3;4;5;6”)
,并希望有输出列表
,但在将项转换为T时失败
如何将所有值强制转换为genericT
?我建议您提供一个转换函数,例如
inline fun <T: Any> convertFromString(myString: String, transformation: (String) -> T)
= myString.split(";")
.map(transformation)
.toList()
此外,使用这种方法,您不再需要将具体化。然而,内联
对于任何包含lambda函数的函数仍然有用。我建议您提供一个转换函数,例如
inline fun <T: Any> convertFromString(myString: String, transformation: (String) -> T)
= myString.split(";")
.map(transformation)
.toList()
此外,使用这种方法,您不再需要将具体化。但是,内联
对于包含lambda函数的任何函数仍然有用。项as T
仅当项“是”T
时有效。在这种情况下,项
是一个字符串
,T
是一个Int
,因此字符串作为Int
失败。我想到的唯一可能的解决方案是类似“如果T是Int->castedList.add(item.toInt())”item as T
只有在item“是”T
时才起作用。在这种情况下,项
是一个字符串
,T
是一个Int
,因此字符串作为Int
失败。我想到的唯一可能的解决方案是“如果T是Int->castedList.add(item.toInt())”