作者热门文章
- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
我有一个这样的java代码:
String getData(Object obj)
{
if (obj instanceof String[])
{
String[] arr = (String[]) obj;
if (arr.length > 0)
{
return arr[0];
}
}
return null;
}
我应该如何将此代码转换为 Kotlin?我尝试了自动 Java 到 Kotlin 的转换,结果如下:
fun getData(obj:Any):String {
if (obj is Array<String>)
{
val arr = obj as Array<String>
if (arr.size > 0)
{
return arr[0]
}
}
return null
}
这是我从 kotlin 编译器得到的错误:
Can not check for instance of erased type: Array<String>
我认为类型删除仅适用于泛型类型,而不适用于简单的强类型 Java 数组。我应该如何正确检查传递的数组实例的组件类型?
编辑
这个问题与泛型类型检查问题不同,因为 Java 数组不是泛型类型,并且通常使用 is 运算符的 Kotlin 类型检查会导致编译时错误。
谢谢!
最佳答案
处理这个问题的正确方法(从 Kotlin 1.2 开始)是使用 isArrayOf
功能:
fun getData(x: Any): String? {
if (x is Array<*> && x.isArrayOf<String>()) {
return x[0] as String
}
return null
}
关于java - 如何在 Kotlin 中检查数组类型(不是泛型类型),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51136866/
我是一名优秀的程序员,十分优秀!