我的域名中有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) 是否可以重载参数为List<>不同类型的方法?
例如,我希望创建两个这样定义的方法:
public void getChanges(List<TypeOne>){}
public void getChanges(List<TypeTwo>){}
Run Code Online (Sandbox Code Playgroud)
但是,由于两种方法都接受 a List,因此存在冲突。有什么方法可以使方法考虑列表中的对象类型吗?
对我来说,编译器没有意识到签名确实不同,因为 aList<TypeOne>与 不同,这似乎很奇怪List<TypeTwo>。