Message à propos d'un nullcheck redondant de liste qui est connu pour être nul

J'ai besoin d'avoir une liste vide, à laquelle j'ajouterai des objets (que je sélectionne et analyse à partir d'AWS S3) en fonction de certains critères. La liste peut rester vide à la fin, c'est pourquoi je vérifie null avant de le transmettre à la fonction suivante.

public String handleRequest(S3Event s3Event, Context context) { 
List <myClass> allRows = null;
s3Event.getRecords().stream()
.map(S3EventNotification.S3EventNotificationRecord::getS3)
.forEach(s3Entity -> {
// some code
myClass v = jsonSerDe.fromJson(line, myClass.class);
allRows.add(v);
// some code
});
if(allRows!=null){
putRecordsinKinesis(allRows);
}
return null;
}

Cependant, lorsque je construis mon code, j'obtiens l'erreur FindBug suivante, qui fait échouer ma construction :

nullcheck redondant de allRows qui est connu pour être nul

Quelle serait la meilleure façon de contourner ce problème sans désactiver les Findbugs ?


Solution du problème

You do have allRows.add(v); but indeed allRows = new ArrayList<>(); is missing, and as allRows is effectively final, it must be done at the declaration. And even then the if is superfluous. So FindBugs is and will be right.

Aussi une version avec Collectors.toList().

 List <myClass> allRows = s3Event.getRecords().stream()
.map(S3EventNotification.S3EventNotificationRecord::getS3)
.map(s3Entity -> {
// some code
myClass v = jsonSerDe.fromJson(line, Vendor.class);
// some code
return v;
})
.collect(Collectors.toList());
if (!allRows.isEmpty()) {
putRecordsinKinesis(allRows);
}

Commentaires

Posts les plus consultés de ce blog

Erreur Symfony : "Une exception a été levée lors du rendu d'un modèle"

Détecter les appuis sur les touches fléchées en JavaScript

Une chaîne vide donne "Des erreurs ont été détectées dans les arguments de la ligne de commande, veuillez vous assurer que tous les arguments sont correctement définis"