abstract class AbstractService<T> {
  private final T service;

  public AbstractService(T service) {
    this.service = service;
  }

  startServiceCall() {} // how to specify types


我有一个抽象类,应该处理启动服务调用(这样我就可以集中日志记录等)。

我有一个儿童班:

public class ServiceWrapper extends AbstractService<ConcreteService>


我希望让儿童服务像startServiceCall一样使用startServiceCall(ConcreteService::getPage, bookId, pageNum)

是否可以通过某种方式在抽象类中指定类型参数,以使startServiceCall中的AbstractService使用T service

我知道一种解决方案是我可以让service变量不是私有的,并使用service::getPage

最佳答案

您可以使用类似T的方式更改通用<T extends AbstractService>,因此可以在AbstractService上调用任何service方法。

但是,就您的情况而言,我不认为您使用的是泛型。您最好只指定抽象方法(例如abstract Object getPage())并在startServiceCall方法中调用它。在这种情况下,您也不需要service字段,您的具体实例就是您的服务。

关于java - 在抽象类方法中指定返回和输入类型,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42011582/

10-10 22:10