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)
但它仅适用于数组。我需要检查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 只适用于数组。
如何检查我有哪种类型的 ArrayList?
我应该澄清,我只关心它是否属于三种类型之一,所以我不需要完全开放的检查方式。