繁体   English   中英

Kotlin - 对类型参数施加限制

[英]Kotlin - Put restriction on type parameter

假设我们有一个抽象的 class

abstract class BaseFragment

此外,我想在 BaseFragment class 上添加一个类型参数,就像这样

abstract class BaseFragment<T>

现在,这是我开始遇到问题的地方 - 我想对T施加限制,即我希望T成为 BaseFragment 的子类型。 然而,当我写

abstract class BaseFragment<T: BaseFragment>

我得到一个编译错误:

class BaseFragment 需要一种类型的参数

我该如何解决这个问题? 我试过BaseFragment<out T: BaseFragment>
BaseFragment<T: BaseFragment<*>>但这似乎也不起作用......

您必须指定BaseFragment的类型边界。 <*>不起作用,因为没有什么可以满足条件。 您可以使用

abstract class BaseFragment<T: BaseFragment<T>>

子类可以“推卸责任”:

open class Foo<T: BaseFragment<T>>: BaseFragment<T>()
//or
open class Bar<T: Bar<T>>: BaseFragment<T>()

或者自己满足子类型要求:

class Baz: BaseFragment<Baz>()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM