当前位置: 首页 > 知识库问答 >
问题:

如何在kotlin中查找泛型类名[重复]

诸葛亮
2023-03-14
class Box<T>(t: T) {
    var value = t
    var classType = T::class.java --Not working
}

var box = Box<Int>(1)

在类内部,我如何找到泛型类中传递的是什么类类型。例如,在上面,我想找到Integer被传递。

共有1个答案

董奇思
2023-03-14

根据需要,您有两种不依赖反思的可能性:

1.获取t类型实例的类,使t的上限为any

class Box<T: Any>(t: T) {
    var value = t
    var classType = t::class.java
}

这有两个限制:

    null
class Box<T>(t: T, private val classType: Class<out T>) {
    var value = t

    companion object {
        inline operator fun <reified T> invoke(t: T): Box<T> = Box(t, T::class.java)
    }
}
 类似资料:
  • 我需要能够在运行时告诉kotlin集合的泛型类型。我怎么做?

  • 只能在类文本的左侧使用类 是否可以像在C#中那样对泛型参数提供类约束,或者是否可以使用其他语法来获取泛型参数的类型信息?

  • 我在Kotlin中有一个方法,它返回一个泛型列表的Rx可观察值: 因为Kotlin list特征定义为,Java将看到返回类型为。 是否有一种方法告诉Kotlin编译器,Java应该将其视为?

  • 主要内容:泛型约束,型变,星号投射泛型,即 "参数化类型",将类型参数化,可以用在类,接口,方法上。 与 Java 一样,Kotlin 也提供泛型,为类型安全提供保证,消除类型强转的烦恼。 声明一个泛型类: 创建类的实例时我们需要指定类型参数: 以下实例向泛型类 Box 传入整型数据和字符串: 输出结果为: 定义泛型类型变量,可以完整地写明类型参数,如果编译器可以自动推定类型参数,也可以省略类型参数。 Kotlin 泛型函数的声明

  • 泛型,即 "参数化类型",将类型参数化,可以用在类,接口,方法上。 与 Java 一样,Kotlin 也提供泛型,为类型安全提供保证,消除类型强转的烦恼。 声明一个泛型类: class Box<T>(t: T) { var value = t } 创建类的实例时我们需要指定类型参数: val box: Box<Int> = Box<Int>(1) // 或者 val box = Bo

  • 我试图从AbstractList派生一个具有上限可比性的委托类,并希望将列表用作可以包含空值的委托。以下是我的实现: 在main方法中,我尝试用List和List实例化类Mylist “类型不匹配。必需:可比较 为什么是Int?不属于可比类型