采用泛型类型参数的 Java 生成类

标签 java generics

例如我有:

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/

相关文章:

java - 为什么使用 SimpleDateFormat 从字符串解析日期时得到错误的结果? ( java )

java - Jar 文件不会用 UTF-8 字符写入电子邮件,但在 Eclipse 中运行时工作正常

c# Generics - 意外的性能结果

java - 从 getDeclaredMethods 中查找具有实际类型的泛型方法

java - JNI释放内存

java - 如何在网站中添加嵌入视频的缩略图(Squarespace)

Java 程序从网页捕获图像并将其链接输出到 Excel 文件

快速影响 inout 通用变量的值

java - 为什么不能,例如将 List<ChildClass> 传递给以 List<ParentClass> 作为参数的方法?

java - 为什么我会收到此泛型类型的未经检查的转换警告?