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/