关于已知为空的列表的冗余空检查的消息
Message about a redundant nullcheck of list which is known to be null
我需要一个空列表,我将根据某些标准向其中添加一些对象(我从 AWS S3 中挑选和解析的对象)。该列表最后可能仍为空,这就是为什么我在将其传递给下一个函数之前检查 null 的原因。
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;
}
但是,当我构建代码时,出现以下 FindBug 错误,导致我的构建失败:
Redundant nullcheck of allRows which is known to be null
在不禁用 Findbugs 的情况下解决此问题的最佳方法是什么?
您确实有 allRows.add(v);
但实际上缺少 allRows = new ArrayList<>();
,并且由于 allRows
实际上是最终的,因此必须在声明中完成。即使那样 if
也是多余的。所以 FindBugs 是而且将是正确的。
还有一个版本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);
}
您正在尝试向“allRows”列表中添加一个值,但该列表为空。您所要做的是以另一种方式创建您的列表:
List<MyClass> allRows = new ArrayList<>();
我需要一个空列表,我将根据某些标准向其中添加一些对象(我从 AWS S3 中挑选和解析的对象)。该列表最后可能仍为空,这就是为什么我在将其传递给下一个函数之前检查 null 的原因。
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;
}
但是,当我构建代码时,出现以下 FindBug 错误,导致我的构建失败:
Redundant nullcheck of allRows which is known to be null
在不禁用 Findbugs 的情况下解决此问题的最佳方法是什么?
您确实有 allRows.add(v);
但实际上缺少 allRows = new ArrayList<>();
,并且由于 allRows
实际上是最终的,因此必须在声明中完成。即使那样 if
也是多余的。所以 FindBugs 是而且将是正确的。
还有一个版本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);
}
您正在尝试向“allRows”列表中添加一个值,但该列表为空。您所要做的是以另一种方式创建您的列表:
List<MyClass> allRows = new ArrayList<>();