gpt4 book ai didi

java - 如何在 Kotlin 中检查数组类型(不是泛型类型)

转载 作者:IT老高 更新时间:2023-10-28 13:41:23 24 4
gpt4 key购买 nike

我有一个这样的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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com