Codeql 扫描警报“取消引用的变量可能为空”

问题描述 投票:0回答:1

在我的代码中,我收到上述警告。这是我得到它的代码部分,

@Data
@Builder
public class Employee {
  private String email;
  @Data
  @Builder
  public static class Department{
    @Singular(value = "department")
    private final Set<String> set;
  }
}

按照空保护的建议,在此访问中变量集可能为空。

需要解决“set”未添加空值的问题,这不会给出代码扫描警报“取消引用的变量可能为空”

java lombok codeql
1个回答
0
投票

您使用了final

private final Set<String> set;

final 用于>>value<< or >>ref 到对象<< cannot be changed.

要解决您的问题 init in >>所有构造函数<< or >>spot<< or delete final.

选项1

import java.util.*; //there are 8 different Sets to chose from
private final Set<String> set = new HashSet<>();

选项2

import java.util.*;
public Department(){ set = new HashSet<>(); }

选项3...你还需要调用init(set = new HashSet<>())

import java.util.*;
private Set<String> set;

此链接可能会帮助您找到有关 final 的更多信息:https://en.wikipedia.org/wiki/Final_(Java)

© www.soinside.com 2019 - 2024. All rights reserved.