Java SonarQube意味着var不为空
在下面的示例中,SonarQube抱怨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
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
。