2012-08-22 26 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