Java SonarQube意味着var不为空

Java SonarQube意味着var不为空,java,android-studio,sonarqube,Java,Android Studio,Sonarqube,在下面的示例中,SonarQube抱怨model.toString()是非空的,(model==null)总是false,需要一些帮助来了解如何修复它。因为书签在if语句中被初始化为变量,并且显然是null public static class Mapper implements DataStore.ModelMapper<Membership, MembershipPassDTO> { @Override public Membershi

在下面的示例中,SonarQube抱怨
model.toString()
非空的
,(
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());
    }
}
公共静态类映射器实现DataStore.ModelMapper{
@凌驾
公共成员身份PassdTo mapModel(成员身份模型){
e(“SULOD成员映射器”,“model.toString());
if(model==null){
将新成员身份密码返回到(模型,,,,,,,,,);
}
返回新的MembershipPassDTO(model,model.getVitalityMembershipId(),model.getMembershipNumber(),model.getCustomerNumber(),model,
model.getVitalityStatus(),model.getMembershipStartDate(),model.getMembershipStatus();
}
}

无论何时调用
model.toString()
并且您的模型确实为空,那么您的方法都将抛出
NullPoUniterException

但是如果
model.toString()
没有抛出
NullPointerEcxeption
那么很明显,
model==null
总是错误的

好吧,这就是SonarQube想告诉你的


如果您想消除警告,可以按照建议执行:


VALogger.e(“SULOD成员映射器”,“模型”)//隐式调用toString()

此函数。而且,
“”+model.toString()
构造充其量是冗余的;要么显式转换为
String
model.toString()
,NPE倾向),要么隐式转换(
“”+model
,NPE安全。)@jensgram非常感谢-加入并帮助我们创建更好的软件=)@jensgram我尝试使用String(model.toString(),NPE倾向)和(“+model,NPE安全)。”但我在rone和safe words上只看到红线。@JoanaMa.LupeGuarin哦,我的意思是你应该使用
VALogger.e(“SULOD会员映射器”,model.toString())
VALogger.e(“SULOD成员映射器”,“模型”)。两者都将确保第二个参数的类型为
String