采用泛型类型参数的Java genegic类

时间:2012-08-22 12:10:29

标签: java generics

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)

2 个答案:

答案 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