class Box<T>(t: T) {
var value = t
var classType = T::class.java --Not working
}
var box = Box<Int>(1)
在类内部,我如何找到泛型类中传递的是什么类类型。例如,在上面,我想找到Integer被传递。
根据需要,您有两种不依赖反思的可能性:
1.获取t
类型实例的类,使t
的上限为any
class Box<T: Any>(t: T) {
var value = t
var classType = t::class.java
}
这有两个限制:
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?不属于可比类型