例如我有:
interface Consumer<F extends FoodType>
interface Vegetarian extends Consumer<Grass>
interface Predator extends Consumer<Meat>
我想要这样的东西:
class Feeder<C extends Consumer<F>>
在Feeder
类声明中使用F
类型参数。目的是仅传递信息类型参数并从传递的类型参数中获取其他类型参数:
new Feeder<Vegetarian>().buyFood(bluegrassIsGrassAndCouldNotBeMeat)
最佳答案
如果类要使用两种泛型类型,则需要两个泛型参数,即使它们是相关的。
class Feeder<C extends Consumer<F>, F extends FoodType>{}
如果更加灵活一点可能会有用。
class Feeder<C extends Consumer<? super F>, F extends FoodType>{}
(Josh Bloch 使用缩写 PECS:生产者的 extend
;消费者的 super
。)
关于采用泛型类型参数的 Java 生成类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12072853/