java - 具有继承问题的泛型
问题描述
请考虑我的代码:
class Fruit {}
class Apple extends Fruit {}
class Pear extends Fruit {}
abstract class AbstractProducer<T extends AbstractProducer, S extends Fruit> {
/**
* Finds same type producers,for example apple producers from USA.
* @return
*/
public List<T> findSameCountryProducers() {...}
public S produce(){...}
public void getAppleFromSameCountryProducer(Function<T, Apple> func) {... }
}
class USAProducer<T extends Fruit> extends AbstractProducer<USAProducer<T>, T> {}
我对这种方法有疑问public void getAppleFromSameCountryProducer(Function<T, Apple> func)
,因为它允许用来Producer<Pear>
生产苹果有什么问题。我需要在这里只允许使用生产苹果的相同类型的生产者。谁能说如何解决它(同时public List<T> findSameCountryProducers
必须工作)?
解决方案
推荐阅读
- scala - 在 Flink 1.7.2 使用 KeyedProcessFunction 和 RocksDB 状态后端的状态处理中接收异步异常
- django - 由于 slug 和外键,django 表单未提交
- wordpress - 如何将自定义 api(cURL 调用)集成到 WordPress 子主题中
- angular - 将数据从动态 mat-cell 传递到点击功能
- python - 类名未定义
- r - mongolite:如何执行 LIKE 查询?
- html - 如何使用 *ngFor 显示数据
- javascript - 使用 ajax 时提交的“未定义”数据
- android - 如何以编程方式获取 Android 程序的信息或 nfc id?
- sql - 使用 SQL 查询计算每日频率的累积计数(在 Amazon Redshift 中)