關注此問題的答案:How can I initialise a static Map?我試圖建立在我的項目靜態映射。
下面的代碼片段:初始化:空值返回
public class MyClass {
public static final Map<String, String> dataMap;
static {
Map<String, String> tempMap = new HashMap<String, String>();
try {
// Getting a string value from a file, e.g. String data
String data = "data";
tempMap.put("firstData", data);
}
catch(Exception e) {}
dataMap = Collections.unmodifiableMap(tempMap);
//DEBUG (I test it and it correctly prints "data")
System.out.println(dataMap.get("firstData"));
}
}
然後我可以調用該地圖的另一個類,如下所示:
public class AnotherClass {
@Before
public void MyMethod() {
System.out.println(MyClass.dataMap.get("firstData"));
}
@Test
public void testMethod() {}
}
現在它打印null
,而不是價值的「數據」。
爲什麼?
不,它不。但那不是你真正的代碼,因爲它甚至不能編譯。 –
爲什麼你不能編譯這段代碼? – PenguinEngineer
因爲MyMethod中缺少分號。發佈一個完整的重現問題的最小例子。如果我使用此代碼並修復它,並添加調用MyMethod的主方法,則無法重現該錯誤(如我所料)。 –