Kotlin - 对类型参数施加限制
Kotlin - Put restriction on type parameter
假设我们有一个摘要class
abstract class BaseFragment
此外,我想在BaseFragment上添加一个类型参数class,像这样
abstract class BaseFragment<T>
现在,这里是我开始 运行 问题的地方 - 我想对 T
施加限制,即,我希望 T
成为 T
的子类型基础片段。然而,当我写
abstract class BaseFragment<T: BaseFragment>
我遇到编译错误:
One type argument expected for 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>()
假设我们有一个摘要class
abstract class BaseFragment
此外,我想在BaseFragment上添加一个类型参数class,像这样
abstract class BaseFragment<T>
现在,这里是我开始 运行 问题的地方 - 我想对 T
施加限制,即,我希望 T
成为 T
的子类型基础片段。然而,当我写
abstract class BaseFragment<T: BaseFragment>
我遇到编译错误:
One type argument expected for 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>()