[英]How can I check for array type (not generic type) in Kotlin
我有这样的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编译器得到的错误:
无法检查已擦除类型的实例: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
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.