2012-08-22 59 views
2

iam通過以下代碼中的聲納獲取異常。如何解決此問題。建議我。如何解決狡猾:未經檢查/未經證實的聲納投射?

@Override 
    public boolean validate(BaseInfo infoObject) { 
    boolean isValid = true; 
    AckTransferPaymentInfo ackTransferPaymentInfo = (AckTransferPaymentInfo) infoObject; 

狡猾的 - 不選中/未確認的投
未檢查/未經證實的從com.vocalink.acsw.common.validation.info.BaseInfo投給com.vocalink.acsw.common.validation.info.AckTransferPaymentInfo在COM。 vocalink.acsw.validation.rule.T170Rule.validate(BaseInfo)

AckTransferPaymentElement payment = ackTransferPaymentInfo.getTransferPayment(); 
if(CreditDebitIndicator.CRDT.equals(ackTransferPaymentInfo.getCreditDebitIndicator()) 
&& ackTransferPaymentInfo.getOriginalPaymentAccount().getAccountName() != null 
+0

你能請張貼班級宣言:BaseInfo和AckTransferPaymentInfo – ppapapetrou

+0

公共接口BaseInfo,公共接口AckTransferPaymentInfo即使該檢查後延伸BaseInfo – user1552438

回答

6

您可以檢查的遍歷infoObject類型是否正確,處理它正確時,它不是:

if (!(infoObject instanceof AckTransferPaymentInfo)) { 
    throw new AssertionError("Unexpected type: " + infoObject); 
} 
AckTransferPaymentInfo ackTransferPaymentInfo = (AckTransferPaymentInfo) infoObject; 

當infoObject爲空時,您應該驗證這是做什麼的。

+1

,FindBugs的似乎是在報告您的代碼段上這一行#4中的錯誤 – yathirigan