通用参数的上限后如何解决“找不到合适的方法”

时间:2019-06-27 11:13:53

标签: java spring generics

在我的Spring启动项目中,我有几种不同的方法,每种方法都用不同的参数调用,但是它们具有相同的元素,动作列表,它们可以是两种类型的对象(ActionCommon或ActionInstance)之一,但是两者都实现了相同的操作界面。但是,尽管使用了上限泛型,但我没有找到合适的方法发现错误,也不知道为什么。

这是一个由几个模块组成的spring boot项目,这是一个使用现有数据模型(我无法编辑)提供新功能的新模块。许多功能都是相同的,但功能之间的唯一区别是参数的数量。

我尝试直接使用接口而不是泛型,但是我的列表使用该接口作为特定对象的列表返回,我无法更改它。

PriceService.java

public interface PriceService {

    List<Price> parseActionsToPrices(List<? extends Action> actions, Client client, Offer offer)

    List<Price> parseActionsToPrices(List<? extends Action> actions, Client client, Contract contract)

    ....more functions
}

OfferService.java

public class OfferServiceImpl implements OfferService

    @Autowired
    PriceService priceService

    @Override
    public List<Price> getPrices(Client client, Offer offer) {
        List<ActionCommon> actions = offer.getActions();

        return priceService.parseActionsToPrices(actions, client, offer)
    }
}

ContractService.java

public class ContractServiceImpl implements ContractService

    @Autowired
    PriceService priceService

    @Override
    public List<Price> getPrices(Client client, Contract contract) {
        List<ActionInstance> actions = contract.getActions();

        return priceService.parseActionsToPrices(actions, client, contract)
    }
}

有问题的用途是

  1. 从函数获取ActionCommon或ActionInstance的列表。

  2. 使用所述列表和适当的参数调用接口方法。

  3. 期望功能返回的结果

相反,我收到了(例如)no suitable method found for parseActionToPrices(List<ActionCommon>, Client, Offer)错误。 所有方法的结果相同。

0 个答案:

没有答案