Java泛型类型限制类类型

时间:2015-07-30 12:31:59

标签: java generics generic-programming

我正在为服务编写客户端包装器。 哪些已经给客户实施。有两个类层次结构:

  1. 帐户
  2. 产品
  3. 这两个类都没有共享公共父接口。但是他们在使用它们时有类似的实现:

    执行代码的示例

    您需要遵循以下代码的帐户服务:

     final AccountsCustomBatchRequest content = new AccountsCustomBatchRequest();
     content.setEntries(request);
     final AccountsCustomBatchResponse response =   this.service.accounts().custombatch(content).setDryRun(this.isDryRun)
                            .execute();
    return response.getEntries();
    

    类似于产品:

    final ProductsCustomBatchRequest content = new ProductsCustomBatchRequest();
     content.setEntries(request);
     final ProductsCustomBatchResponse response =   this.service.products().custombatch(content).setDryRun(this.isDryRun)
                            .execute();
    return response.getEntries(); 
    

    有没有办法概括代码?我不能使用通用模式作为那些不支持普通父类的模式。 我可以这样做:

       T extends Account or Product ?
    

2 个答案:

答案 0 :(得分:0)

他们分享此方法:custombatch(content)

我会创建一个包含custombatch方法的界面,并制作类似T extends custombatchInterface

的内容

答案 1 :(得分:0)

如果两个类不共享相同的层次结构,那么您无法将它们组合在一起。一种可能的方法是使用方法CustomBatchInterface创建一个新的接口custombatch(content)并创建两个classes extends ProductsCustomBatchResponseAccountsCustomBatchResponse implements CustomBatchInterface。{{1}}。