generics - 如何从泛型方法参数获取java类?

标签 generics kotlin

我尝试使用下一个方法:

fun <T> put(value: T){
    val clazz = T::class.java
}

但有异常(exception) Kotlin: Only classes are allowed on the left hand side of a class literal
如何从泛型参数中获取类?

除了类可以作为参数传递之外,还有哪些其他选项?

最佳答案

要访问函数中的泛型类型,您需要创建类型 reified .
由于 JVM 本身不支持此功能,因此它仅在内联函数中可用:

inline fun <reified T : Any> put(value: T) {
    val clazz = T::class.java
}
Any 的类型界限需要防止可空类型出现一些并发症。

关于generics - 如何从泛型方法参数获取java类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35943351/

相关文章:

android - Moshi KotlinJsonAdapterFactory 在启用 minify 后无法解析 Json

kotlin - 根据字段值反序列化为密封子类

java - 如何在抽象父类(super class)中定义泛型列表?

Java 通用枚举作为参数

java - List<Dog> 是 List<Animal> 的子类吗?为什么 Java 泛型不是隐式多态的?

c# - CS0121 调用泛型容器的索引器时方法调用不明确

c# - wcf 将列表作为方法参数传递

android - 集成使用 Kotlin Coroutines 依赖问题构建的库模块

android - InvalidObjectException ("Remote key and the prevKey should not be null") 创建 RemoteMediator android

android - SwipeToDismiss 在带有动画的 LazyColumn 内