一尘不染

使用List <>参数重载Java函数

java

我有2节课

public class Customer{
  ...
  public String getCustomerNumber();
  ...
}

public class Applicant{
   ....
   private Customer c;
   public Customer getCustomer(){ return c; }
   ...
}

当显示客户或申请人列表时,我需要一个函数,该函数可对列表进行迭代并使用CustomerNumber进行处理。

我试过重载该功能

public void processCustomerNumbers(List<Customer> custList)
...

public void processCustomerNumbers(List<Applicant> appList)
...

但是这些被看作是重复的方法…除了有2个不同名称的函数之外,还有一种不错的方法吗?


阅读 563

收藏
2020-12-03

共1个答案

一尘不染

如果您使两个类都实现一个通用接口,

interface CustomerNumber {
    String getCustomerNumber();
}

public class Customer implements CustomerNumber {
  ...
  public String getCustomerNumber();
  ...
}

public class Applicant implements CustomerNumber {
   ....
   private Customer c;
   public Customer getCustomer() { return c; }
   public String getCustomerNumber() { return getCustomer().getCustomerNumber(); }
   ...
}

那么您也许可以只用一个方法就能做您想做的事情:

public void processCustomerNumbers(List<? extends CustomerNumber> appList) {
    for (Customer c: appList) {
        processCustomerNumber(c.getCustomerNumber());
    }
}
2020-12-03