首页 > 解决方案 > 具有继承问题的泛型

问题描述

请考虑我的代码:

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必须工作)?

标签: javagenerics

解决方案


推荐阅读