2
我試圖使用一個簡單的java EnumMap
來存儲道路類型到默認速度的映射。但我馬上就遇到了以下問題:奇怪的EnumMap行爲
我創建了一個簡單枚舉如下:
public enum RoadCategory {
AUTOBAHN("Autobahn", 0),
BUNDESSTR("Bundesstrasse", 1),
OTHER("other", -1);
private String name;
private int code;
private RoadCategory(String name, int code){
this.name = name;
this.code = code;
}
}
接下來,我創建了一個小型的類的試圖利用此枚舉作爲一個枚舉映射的關鍵:
import java.util.EnumMap;
import java.util.Map;
public class VehicleConfig {
public static void main(String[] args) throws Exception {
VehicleConfig v = new VehicleConfig();
v.addSpeedMapping(RoadCategory.AUTOBAHN, 80.0);
}
private Map<RoadCategory,Double> speedMap;
public VehicleConfig(){
this.speedMap = new EnumMap<RoadCategory, Double>(RoadCategory.class);
}
public double addSpeedMapping(RoadCategory category, double speed) throws Exception{
if(speedMap == null) throw new Exception("speedmap NULL");
if(category == null) throw new Exception("category NULL");
return this.speedMap.put(category, speed); // this is line 20
}
}
不幸的是,addSpeedMapping
在返回this.speedMap.put(category, speed);
的行中拋出了NullPointerException
。因此我添加了條件,但這在這裏沒有幫助。
Exception in thread "main" java.lang.NullPointerException
at hpi.bpt.traffic.VehicleConfig.addSpeedMapping(VehicleConfig.java:20)
at hpi.bpt.traffic.VehicleConfig.main(VehicleConfig.java:8)
我不知道我在做什麼錯在這裏。有人知道如何得到這個固定/工作嗎?
謝謝!我只是將返回類型從'double'更改爲'Double',根據您的解決方案,該類型也適用。非常感謝! – sailingthoms