generics - 在Kotlin中,如何定义具有上限的泛型类型的属性?

标签 generics kotlin

以下Java代码的Kotlin等效项是什么?

class Test {
    Class<? extends Number> types = new Class[] {
            Integer.class, Long.class, Short.class, Byte.class, Float.class, Double.class
    };
}

最佳答案

您可以使用out关键字:

var types: Array<Class<out Number>> = arrayOf(
    Integer::class.java, 
    Long::class.java, 
    Short::class.java, 
    Byte::class.java, 
    Float::class.java, 
    Double::class.java
)
out修饰符用于指示协方差(类似于Java中的? extends T)。 协方差-是将通用类型参数从类更改为其父级之一的功能,即将List<String>分配给List<Any>

关于generics - 在Kotlin中,如何定义具有上限的泛型类型的属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54750771/

相关文章:

java - Kotlin 中的 ClassCastException 即使条件语句检查其类型是否正确

java - Kotlin 应用程序中的 Stripe 集成 -- IllegalStateException

kotlin - RxJava:运行可完成列表,直到成功

java - 泛型和继承 : need a complex Map instance

Kotlin 编译器报告构造函数中未使用的表达式,以便构建器采用 vararg lambda

android - 输出程序时出现 Gradle 构建错误

c# - 为什么下面的代码需要指定泛型类型

typescript - 如何从 TypeScript 中的泛型部分构建目标对象?

Java 基础作为模板参数

oop - 是否有更优雅的方式(或模式)来实现相关类组