我想要做的是将文件(使用 Apache poi 的 excel 文件)中的键/值对加载到将用作查找表的静态映射中。一旦加载表将不会改变。
public final class LookupTable
{
private final static Map<String, String> map;
static {
map = new HashMap<String, String>();
// should do initialization here
// InputStream is = new FileInputStream(new File("pathToFile"));
// not sure how to pass pathToFile without hardcoding it?
}
private LookupTable() {
}
public static void loadTable(InputStream is) {
// read table from file
// load it into map
map.put("regex", "value");
}
public static String getValue(String key) {
return map.get(key);
}
}
理想情况下,我想在静态初始化块中加载地图,但是如何在不对其进行硬编码的情况下传递流呢?我看到使用 loadTable 静态方法的问题是在调用其他静态方法之前可能不会调用它。
// LookupTable.loadTable(stream);
LookupTable.getValue("regex"); // null since map was never populated.
有更好的方法吗?