Я знаю, что во время выполнения параметры типа будут стерты, и, следовательно, мы не сможем получить к ним прямой доступ. Вот почему в kotlin есть параметры овеществленного типа. Но его использование ограничено только для функций. Я даже пытался получить явный аргумент в конструкторе следующим образом:
class Outer<T> {
inner class Inner(private val clazz: Class<T>) {
private fun func() {
if (obj is clazz) { // even tried obj is clazz::class.java
...
} else {
...
}
}
}
}
Но это дает мне ошибку Unresolved reference: clazz в студии Android. Кто-нибудь, пожалуйста, помогите мне.

clazz — это не имя класса, поэтому с ним нельзя использовать is. Это свойство типа Class<T>. Поэтому вы должны использовать ==, чтобы сравнить с ним.
if (obj::class.java == clazz) { // ...
Обратите внимание, что obj::class.java == clazz ложно, если obj на самом деле является экземпляром подкласса, а is будет истинным. Чтобы включить подклассы, воспользуйтесь ответом gidds. (Я уверен, что вы это знаете, но люди, которые читают ответ, могут не знать!).
Вы можете сравнивать объекты Class с учетом подклассов, используя Class.isAssignableFrom() . (Но я думаю, что Class.isInstance() в этом случае проще и понятнее.)
Вы можете использовать динамический эквивалент is, то есть Class.isInstance():
if (clazz.isInstance(obj)) { // ...
(KClass также имеет метод isInstance(), если вы хотите придерживаться чистого Kotlin.)
«даже пробовал obj is clazz::class.java» Это будет объект класса
java.lang.Class, так что хорошо, что не получилось :)