我有一个接受value: String?
的方法。该方法的目的是将String值转换为正确的表示形式。例如:
"true" -> a Boolean that has a true value
"20" -> an Int that contains 20
"1223.2" -> a Dobule
在Koltin中实现这一结果的最有效/最简洁的方法是什么?
更新
这是我目前的代码:
private fun insertRealType(map: WritableMap, key: String, value: String?) {
val test = getValueType(value)
when (test) {
is String -> map.putString(key, test)
is Boolean -> map.putBoolean(key, test)
is Int -> map.putInt(key, test)
is Double -> map.putDouble(key, test)
else -> map.putNull(key)
}
}
private fun getValueType(value: String?): Any {
var returnValue: Any?
returnValue = value?.toDoubleOrNull()
if (returnValue != null)
return returnValue
returnValue = value?.toIntOrNull()
if (returnValue != null)
return returnValue
// ETC......
}
答案 0 :(得分:1)
这完全取决于你对"正确"的解释。表示。例如,"0"
的值可以是Int
或假Boolean
。
您在此处面临的另一个问题是,您必须以任何方式动态转换变量。如果您选择从该字符串中创建JSONObject
并从中生成List<Object>
,或者即使您编写了自己的方法将字符串值转换为Object
s,您也可以ll仍然需要将所述对象强制转换为适当的形式(可能使用is
运算符检查其类型)。为了让你有一个这个摘要的方法,你必须手动处理它的通用结果。
我可以帮助你提供比这样的概念更实际的答案,但你需要提供一些代码