在Kotlin的泛型中扩展类
我试图用简单的构造函数来实现这个枚举,如下所示:
enum class WithGraphicKind(val innerClass: Class<*>) { CONTACT(Contact::class.java), SALE(Sale::class.java); }
由于Contact
和Sale
类都实现了一个公共接口WithGraphics
,所以我想输入构造函数为innerClass: Class<WithGraphics>
,但是这不起作用。 我也试过Class<* : WithGraphics>
和其他类似的东西,但没有任何作用。 我在这里的官方文档中也找不到任何提示: https : //kotlinlang.org/docs/reference/generics.html
您需要声明站点差异Kotlin Generics:声明站点差异
如果你告诉编译器你只会使用WithGraphics,编译器允许WithGraphics的任何子类型
enum class WithGraphicKind(val innerClass: Class<out WithGraphics>) { CONTACT(Contact::class.java), SALE(Sale::class.java); }
enum class WithGraphicKind(val innerClass: Class<out WithGraphics>)
这基本上等同于Java的
Class<? extends WithGraphics>