填充地图对象时出现Java NullPointerException

Khl*_*don 0 java android

我正在尝试使用字符串作为键创建一个映射,将值作为一组Runner对象创建.

然而,当我用一些随机数据填充地图时,我得到一个NullPointerException并且我无法弄明白.

请参阅以下代码:

public class EventRunners
{
   // instance variables - replace the example below with your own
   public Map<String, Set<Runner>> runnerMap;


   /**
    * Constructor for objects of class EventRunners
    */
   public EventRunners()
   {
     Map <String, Set<Runner>> runnerMap = new HashMap<>();
   }


   /**
    * Populates the map with appropriate data
    */
   public void createMap()
   {
      /**
       * Create the Runner objects
       */
      Runner runner1 = new Runner("Simon", "Strain", "4:45:00" );
      Runner runner2 = new Runner("James", "Cashin", "4:45:00" );
      Runner runner3 = new Runner("Mark", "Perez", "3:30:00" );
      Runner runner4 = new Runner("Mairi", "Henderson", "3:25:00" );
      Runner runner5 = new Runner("David", "Pitts", "4:35:00" );
      Runner runner6 = new Runner("Matthew", "Davis", "4:55:00" );
      Runner runner7 = new Runner("Richard", "Boulton", "3:20:00" );
      Runner runner8 = new Runner("Harriet", "Edwards", "4:30:00" );
      Runner runner9 = new Runner("Sheree", "Slater", "4:40:00" );

      Set <Runner> runnerWave = new HashSet<>();

      runnerWave.add(runner1);
      runnerWave.add(runner2);
      runnerWave.add(runner3);
      System.out.println(runnerWave);
      runnerMap.put("Green", runnerWave);

      runnerWave = new HashSet<>();
      runnerWave.add(runner4);
      runnerWave.add(runner5);
      runnerWave.add(runner6);
      runnerMap.put("Blue", runnerWave);

      runnerWave = new HashSet<>();
      runnerWave.add(runner7);
      runnerWave.add(runner8);
      runnerWave.add(runner9);
      runnerMap.put("Red", runnerWave);

   }
}
Run Code Online (Sandbox Code Playgroud)

任何帮助将不胜感激.

Pet*_*hev 6

您的错误在构造函数中: public EventRunners() { Map <String, Set<Runner>> runnerMap = new HashMap<>(); }

您正在初始化局部变量,而不是字段.取下Map <String, Set<Runner>>前面的.