gpt4 book ai didi

kotlin - 在 Kotlin 中检查 ArrayList 的类型

转载 作者:行者123 更新时间:2023-12-02 12:47:32 33 4
gpt4 key购买 nike

Kotlin 提供了 Array.isArrayOf() 来检查数组是否属于某种类型。

它是这样使用的

if(object.isArrayOf<String>())

并像这样定义
/**
* Checks if array can contain element of type [T].
*/
@Suppress("REIFIED_TYPE_PARAMETER_NO_INLINE")
public fun <reified T : Any> Array<*>.isArrayOf(): Boolean =
T::class.java.isAssignableFrom(this::class.java.componentType)

但它仅适用于 Array。我需要检查ArrayList。

我想像这样改变签名。
@Suppress("REIFIED_TYPE_PARAMETER_NO_INLINE")
public fun <reified T : Any> ArrayList<*>.isArrayListOf(): Boolean =
T::class.java.isAssignableFrom(this::class.java.componentType)

但 class.java.componentType 特定于 Array

如何检查我拥有的 ArrayList 类型?

我应该澄清一下,我只关心它是否是 3 种类型之一,所以我不需要完全开放式的检查方式。

最佳答案

你不能。数组是唯一可以实现的泛型类型(因为它们并不是真正意义上的泛型,Kotlin 只是隐藏了它)。

你唯一能做的就是看看它的内容,但当然

  • 这不适用于空列表;
  • 如果列表包含例如String ,可能是 ArrayList<String> , ArrayList<CharSequence> , ArrayList<Any>

  • 以此目的:

    I need to direct it into the appropriate Bundle method. bundle.putStringArrayList(), bundle.putIntegerArrayList(), ect



    我相信两者都不是问题。

    关于kotlin - 在 Kotlin 中检查 ArrayList 的类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53545995/

    33 4 0