在Kotlin的泛型中扩展类

Voj*_*ěch 2 kotlin

我试图用简单的构造函数实现这个枚举,如下所示:

enum class WithGraphicKind(val innerClass: Class<*>) {
    CONTACT(Contact::class.java), SALE(Sale::class.java);
}
Run Code Online (Sandbox Code Playgroud)

由于两者ContactSale类都实现了一个公共接口WithGraphics,我想将构造函数键入innerClass: Class<WithGraphics>,但是这不起作用.我也试过Class<* : WithGraphics>和其他人一样,但没有任何作用.我也没有在官方文档中找到任何提示:https://kotlinlang.org/docs/reference/generics.html

D3x*_*ter 5

您需要声明站点差异Kotlin Generics:声明站点差异

如果你告诉编译器你只使用WithGraphics,编译器允许使用WithGraphics的任何子类型

enum class WithGraphicKind(val innerClass: Class<out WithGraphics>) {
    CONTACT(Contact::class.java), SALE(Sale::class.java);
}
Run Code Online (Sandbox Code Playgroud)