使用通用重载(不覆盖)的 Java 擦除
2022-09-02 11:03:07
我的域中有 FinanceRequests 和 CommisionTransactions。如果我有一个财务请求列表,每个财务请求可能包含多个需要抓回的Commmision交易。不要担心这到底是怎么做到的。
下面的类(非常底部)让我感到所有模糊和温暖,因为它简洁且很好地重用了现有代码。一个问题 类型擦除。
public void clawBack(Collection<FinanceRequest> financeRequestList)
public void clawBack(Collection<CommissionTrns> commissionTrnsList)
它们都在擦除后具有相同的签名,即:
Collection<FinanceRequest> --> Collection<Object>
Collection<CommissionTrns> --> Collection<Object>
因此,Eclipse抱怨说:
方法clawBack(Collection)与CommissionFacade类型的另一种方法具有相同的擦除lawBack(Collection)。
任何建议来重构它,以便它仍然是一个优雅的解决方案,使良好的代码重用?
public class CommissionFacade
{
/********FINANCE REQUESTS****************/
public void clawBack(FinanceRequest financeRequest)
{
Collection<CommissionTrns> commTrnsList = financeRequest.getCommissionTrnsList();
this.clawBack(commTrnsList);
}
public void clawBack(Collection<FinanceRequest> financeRequestList)
{
for(FinanceRequest finReq : financeRequestList)
{
this.clawBack(finReq);
}
}
/********COMMISSION TRANSACTIOS****************/
public void clawBack(CommissionTrns commissionTrns)
{
//Do clawback for single CommissionTrns
}
public void clawBack(Collection<CommissionTrns> commissionTrnsList)
{
for(CommissionTrns commTrn : commissionTrnsList)
{
this.clawBack(commTrn);
}
}
}