如何解决狡猾:声纳中未经检查/未经证实的演员?

use*_*438 2 java eclipse findbugs exception sonarqube

我在下面的代码中通过声纳得到了例外.我怎么解决这个问题.建议我.

    @Override 
     public boolean validate(BaseInfo infoObject) { 
     boolean isValid = true; 
     AckTransferPaymentInfo ackTransferPaymentInfo = (AckTransferPaymentInfo) infoObject; 
Run Code Online (Sandbox Code Playgroud)

狡猾 - 未经检查/未经
证实的投射从com.vocalink.acsw.common.validation.info.BaseInfo到com.vocalink.acsw.validation.rule.T170Rule的com.vocalink.acsw.common.validation.info.AckTransferPaymentInfo中未经检查/未经证实的投射.validate(BaseInfo)

AckTransferPaymentElement payment = ackTransferPaymentInfo.getTransferPayment();  
if(CreditDebitIndicator.CRDT.equals(ackTransferPaymentInfo.getCreditDebitIndicator()) 
&& ackTransferPaymentInfo.getOriginalPaymentAccount().getAccountName() != null 
Run Code Online (Sandbox Code Playgroud)

Tim*_*imK 6

您可以检查infoObject的类型是否正确,并在不是时适当地处理它:

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

当infoObject为null时,您应该验证这是否符合您的要求.