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 специфичен для Array
Как проверитькакой тип ArrayList у меня есть?
Я должен уточнить, меня интересует только один из трех типов, поэтому мне не нужен полностью открытый способ проверки.