E.g。我有:
interface Consumer<F extends FoodType>
interface Vegetarian extends Consumer<Grass>
interface Predator extends Consumer<Meat>
我希望有类似的东西:
class Feeder<C extends Consumer<F>>
在F
类声明中使用Feeder
类型参数。目的是仅传递信息类型参数并从传递的参数中获取其他类型参数:
new Feeder<Vegetarian>().buyFood(bluegrassIsGrassAndCouldNotBeMeat)
答案 0 :(得分:1)
您可以使用:
class Feeder<C extends Consumer<? extends FoodType>>
或简单地说:
class Feeder<C extends Consumer<?>>
但它们之间存在差异。据我所知,你的问题(不是很清楚)你想要这两个中的一个。
答案 1 :(得分:1)
如果该类将使用两种泛型类型,即使它们是相关的,也需要两个通用参数。
class Feeder<C extends Consumer<F>, F extends FoodType>{}
如果有点灵活可能有用。
class Feeder<C extends Consumer<? super F>, F extends FoodType>{}
(Josh Bloch使用首字母缩略词PECS:Producer的extend
;消费者的super
。