首页 > 解决方案 > Java 的 Kotlin 等效项:类

问题描述

假设我有 A 类作为抽象父类,而 B & C 扩展它。我想创建一个带有输入类 B 和 C 的选项的函数,比如 A 的孩子(或 A 本身)

在 java 中,我只需要定义一个类型,就像Class<? : Extends A> 在 Kotlin 中我可以做的那样KClass<*>,但这似乎太自由了。

如何仅限制 A 的孩子的选项?

标签: kotlingenerics

解决方案


在 Kotlin 中,如果您KClass<*>愿意接受所有课程。如果您定义 withKClass<A>将只接受A类。为了接受 A 及其子项,您定义了KClass<out A>. 请参阅下面的示例

abstract class A
class B:A()
class C:A()

fun method (param : KClass<out A>){}

method(B::class)

推荐阅读