我正在创建一个接受水果的反应流
// PublishSubject is part of RxJava library. It accepts a generic T
class PublishSubject<T> {
...
}
val stream = PublishSubject<Fruit>.create()
但是,我希望它仅接受可食用的水果
interface Edible {
fun eat()
}
class Apple: Fruit, Edible
可食用行为界面可以应用于其他食物(冰淇淋,马铃薯),但是,我只需要可食用的水果。
val stream = PublishSubject<Fruit : Edible>.create()
类似的事情,但这似乎不起作用。
可以在实例化时对泛型进行进一步约束而无需将其PublishSubject
子类化吗?
我可以接受所有食物,并做一些怪异的过滤,但这似乎不对
PublishSubject<Edible>.create().filter(edible -> edible is Fruit)
答案 0 :(得分:1)
您可以像这样使用where
关键字:
class PublishSubject<T> where T : Fruit, T : Edible {
...
}