相关疑难解决方法(0)

具有泛型重载的Java擦除(不覆盖)

我的域名中有FinanceRequests和CommisionTransactions.如果我有一个FinanceRequests列表,每个FinanceRequest可能包含多个需要回收的CommisionTransactions.不要担心这是怎么做到的.

下面的课程(非常底层)让我感觉自己的模糊和温暖,因为它很好地重用现有的代码.一个问题类型擦除.

public void clawBack(Collection<FinanceRequest> financeRequestList)  
public void clawBack(Collection<CommissionTrns> commissionTrnsList)
Run Code Online (Sandbox Code Playgroud)

它们在擦除后都具有相同的签名,即:

Collection<FinanceRequest> --> Collection<Object>  
Collection<CommissionTrns> --> Collection<Object>  
Run Code Online (Sandbox Code Playgroud)

所以eclipse抱怨说:
方法clawBack(Collection)具有相同的擦除clawBack(Collection)作为类型为CommissionFacade的另一种方法

有没有重组这个的建议,以便它仍然是一个优秀的解决方案,可以很好地重用代码?


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

}
Run Code Online (Sandbox Code Playgroud)

java generics overloading type-erasure

15
推荐指数
2
解决办法
8103
查看次数

如何使用不同类型的列表重载方法?

是否可以重载参数为List<>不同类型的方法?

例如,我希望创建两个这样定义的方法:

public void getChanges(List<TypeOne>){}
public void getChanges(List<TypeTwo>){}
Run Code Online (Sandbox Code Playgroud)

但是,由于两种方法都接受 a List,因此存在冲突。有什么方法可以使方法考虑列表中的对象类型吗?

对我来说,编译器没有意识到签名确实不同,因为 aList<TypeOne>与 不同,这似乎很奇怪List<TypeTwo>

java overloading type-erasure

0
推荐指数
1
解决办法
1546
查看次数

标签 统计

java ×2

overloading ×2

type-erasure ×2

generics ×1