Java-erasure bei generischen überlastung (nicht überschreiben)

Habe ich FinanceRequests und CommisionTransactions in meiner Domäne.
Wenn ich eine Liste von FinanceRequests jeder FinanceRequest konnte, enthalten mehrere CommisionTransactions werden müssen zurückgefordert werden. Dont worry, wie genau das geschehen ist.

Die Klasse unten (ganz unten), macht mich das Gefühl, alles verschwommen und warm, da seine succint und verwendet vorhandenen code hübsch. Ein problem Type erasure.

public void clawBack(Collection<FinanceRequest> financeRequestList)  
public void clawBack(Collection<CommissionTrns> commissionTrnsList)

Beide haben die gleiche Signatur, die nach dem löschen, ie:

Collection<FinanceRequest> --> Collection<Object>  
Collection<CommissionTrns> --> Collection<Object>  

Also eclipse complainst, dass:
Methode Rückforderung(Sammlung) hat die gleiche erasure Rückforderung(Sammlung) als eine weitere Methode in der Art CommissionFacade

Anregungen zu restrukturieren, so dass es noch eine elegante Lösung, macht guten code reuse?


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);
        }
    }

}

InformationsquelleAutor n4rzul | 2011-08-26

Schreibe einen Kommentar