
[英]how to circumvent Kotlin's restriction “Type parameter is forbidden for catch parameter”
[英]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.