SonarQube 暗示 var 不为空

Joa*_*rin 5 java android-studio sonarqube

在下面的示例中,SonarQube 抱怨model.toString()isnot null且 ( model == null) 始终为false,需要一些帮助来了解可以采取哪些措施来修复它。因为书签在 if 语句中被初始化为变量,并且显然将是null.

public static class Mapper implements DataStore.ModelMapper<Membership, 
MembershipPassDTO> {            
    @Override
    public MembershipPassDTO mapModel(Membership model) {
        VALogger.e("SULOD Membership Mapper", "" + model.toString());

        if (model == null) {
            return new MembershipPassDTO(model, "", "", "", "", "", "");
        }
        return new MembershipPassDTO(model, model.getVitalityMembershipId(), model.getMembershipNumber(), model.getCustomerNumber(),
                model.getVitalityStatus(), model.getMembershipStartDate(), model.getMembershipStatus());
    }
}
Run Code Online (Sandbox Code Playgroud)

Mar*_*ank 2

每当你调用model.toString()并且你的模型确实为 null时,你的方法就会抛出一个NullPoiunterException.

但如果model.toString()没有抛出 aNullPointerEcxeption那么很明显,那model == null总是假......

嗯 - 这就是 SonarQube 想要告诉你的......


如果你想摆脱警告,你可以按照jensgram 的建议进行操作:

VALogger.e("SULOD Membership Mapper", ""+model); //implicitly calls toString()