如何使用混凝土参数进行亚分



我有一个类交易和服务接口

public class Transaction {}
public interface RequestService {
    public String getRequest(Transaction transaction);
}

现在,我想将交易类别分类,并拥有一个服务接口的具体类

public class ESPTransaction extends Transaction {}
public class ESPRequestService implements RequestService {
    @Override
    public String getRequest(ESPTransaction espTransaction) {
        StringBuffer buff = new StringBuffer(espTransaction.someMethodThatDoesntExistInParentClass());
        return buff.toString();
    }
}

IDE抱怨说,即使Espransaction子类交易,我也没有覆盖Supertype方法。

我该如何实现?

正如IDE指出的那样,ESPRequestService无法正确实现RequestService,因为它没有getRequest(Transaction)方法。

一个整洁的解决方案是使接口通用,因此每个RequestService实现都可以指定其期望的Transaction的类型:

public interface RequestService<T extends Transaction> {
    public String getRequest(T transaction);
}
public class ESPRequestService implements RequestService<ESPTransaction> {
    @Override
    public String getRequest(ESPTransaction espTransaction) {
        StringBuffer buff = new StringBuffer(espTransaction.someMethodThatDoesntExistInParentClass());
        return buff.toString();
    }
}

相关内容

  • 没有找到相关文章

最新更新