【问题标题】:Initialize a List<Players> inside the class Team在 Team 类中初始化 List<Players>
【发布时间】:2021-05-22 20:55:58
【问题描述】:

当我设法从 Teams 类(其中存储了 List&lt;Players&gt;)中调用构造函数时,是 obvs null。我在哪里填充该列表?我需要在 Players 类中填充它吗?还是在 Team 类中?

我最近在使用 Spring。

我将留下 3 类的示例。 Squadre 表示团队,Giocatori 表示球员。 (使用龙目岛)

    public class Squadra {
    
        private String nomeSquadra;
    
        private List<Giocatori> rosaAttuale;
        private int goalFatti;
        private int goalSubiti;
        private int differenzaReti;
        private int posizioneInCampionato;
        private double valoreRosa;
    
        public void addGiocatori(Giocatori g) {
            rosaAttuale.add(g);
        }
    
        public void removeGiocatori(Giocatori g) {
            rosaAttuale.remove(g);
        }
    
    }


    public class Giocatori {
    
        String nomeGiocatore;
        String cognomeGiocatore;
        int eta;
        int numeroMaglia;
    
        public Giocatori() {
    
        }
    
    }

    @Component
    public class SquadreRepo {
    
        @Getter
        private List<Squadra> dataBaseSquadre = new ArrayList<Squadra>();
    
        public SquadreRepo() {
    
            dataBaseSquadre.add(new Squadra(null, null, 0, 0, 0, 0, 0))
            
        }
    
        public void addSquadra(Squadra s) {
            dataBaseSquadre.add(s);
        }
    
        public void removeSquadra(Squadra s) {
            dataBaseSquadre.remove(s);
        }
    }

【问题讨论】:

  • 您正在使用dataBaseSquadre.add(new Squadra(null, null, 0, 0, 0, 0, 0)) 我在 Squadra 中没有看到任何此类签名的构造函数。您的代码中是否存在这种情况?
  • 我正在使用 Lombok 和 @AllArgsConstr,这就是你在这里看不到它的原因。试图发布它,但它不会显示!

标签: java spring list


【解决方案1】:

Squadra 类的玩家列表 rosaAttuale 从未在上面的代码中初始化。您在 SquadreRepo 中通过调用构造函数来初始化您的团队

dataBaseSquadre.add(new Squadra(null, null, 0, 0, 0, 0, 0))

第二个参数大概是 rosaAttuale 列表(假设构造函数是使用 Lombok 生成的),所以您的列表是 null 并且您永远无法添加任何玩家。相反,尝试用一个空列表来初始化它,例如:

dataBaseSquadre.add(new Squadra(null, new ArrayList<>(), 0, 0, 0, 0, 0));

在使用 Lombok 构建器时,请参阅这些问题以正确初始化集合:

【讨论】:

    【解决方案2】:

    您的问题不是很清楚,但我知道您在运行此方法时会收到NullPointerException

    public void addGiocatori(Giocatori g) {
        rosaAttuale.add(g); //<- rosaAttuale is null
    }
    

    如果这就是你的意思,确实,你需要在构建类 Squadra 时初始化列表。

    要做到这一点,至少有两种选择:

    在构造函数中

     public Squadra() {
         this.rosaAttuale = new ArrayList<>();
     }
    

    或者直接在字段声明中

    private final List<Giocatori> rosaAttuale = new ArrayList<>();
    

    【讨论】:

      猜你喜欢
      • 2015-08-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-08
      • 2016-08-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多