使用通用重载(不覆盖)的 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);
        }
    }
}